多语言展示
当前在线:693今日阅读:84今日分享:32

多表格区域汇总大全

在实际操作中最常见的情况,是需要进行汇总的各数据表格的结构特征往往相差较大。造成这种现象的主要原因是数据记录者对源数据表概念的模糊,因此,经过相应加工而得到的数据文件便经常会产生数据源字段个数不一样、字段名称不一致或位置顺序不相同等问题。尽管存在合并单元格、小计等特色的表格能为视觉上的审阅带来一定可读性,但反过来,却导致表格数据汇总乃至求和难以进行。
工具/原料

电脑,excel

方法/步骤
1

公式法第一例1、通过公式,获取当前工作簿全部工作表名称单击“公式”-“名称管理器”-“新建名称”,新建名称“tiqu”,接着在“引用位置”框中输入公式:【=MID(GET.WORKBOOK(1),FIND(']',GET.WORKBOOK(1))+1,99)&T(now())】。说明:&T(now())的作用是让公式自动刷新。2、再借助index函数返回数组区域每行对应数值在合适的单元格位置(例如A2)置入公式:【=INDEX(tiqu,INT((ROW(A1)-1)/6)+1)】说明:公式的目的是让A列自动返回工作表名称,并每隔N行更换填充下一个名称。3、在上述位置的右侧单元格内(例如B2)输入公式以下:【=INDIRECT($A2&'!'&ADDRESS(COUNTIF($A$1:$A2,$A2)+1,COLUMN(A1)))】说明:公式的作用是根据A列的表名称,通过indirect函数返回该表数值。其中,address函数能够根据行数和列数生成引用单元格地址,如address(1,1)的结果是$A$1。

2

第二例仅适用数据结构特别简单的表格公式:【=INDIRECT(B$1&'!B'&ROW())】说明:B$1&'!B'&ROW(),根据ROW函数产生的行号,生成单元格地址。当公式在第2行时,ROW()结果是2,所以B$1&'!B'&ROW()的结果就是:1!B2。再借助INDIRECT函数将代表单元格地址的字符串转化为真正引用路径。

3

多重合并透视法打开数据文件,然后在键盘上连续按下“ALT+D+P”三键,从而调出“数据透视表和数据透视图向导”,接着通过“多重合并计算数据区域”命令,可在不借助任何公式的情况下快速完成几个Excel表格的区域汇总。但此种方法也仅适用于字符列的列数最多一列且数据结构又相对比较简单的Excel表格。

4

Power Query插件法如果每个表格的列数多,且需要汇总的表格的数量也多,这时可考虑借助Power Query插件来合并数据区域;而且,在这方面,该插件存在显著优势。然而,在实际工作中,我们往往很难要求每个数据文件均具备相同的表格形式,也就是保证每个表格的字段名称、位置顺序和字段个数等数据结构都一样。

5

SQL法在实际操作中最常见的情况,是需要进行汇总的各数据表格的结构特征往往相差较大。造成这种现象的主要原因是数据记录者对源数据表概念的模糊,因此,经过相应加工而得到的数据文件便经常会产生数据源字段个数不一样、字段名称不一致或位置顺序不相同等问题。尽管存在合并单元格、小计等特色的表格能为视觉上的审阅带来一定可读性,但反过来,却导致表格数据汇总乃至求和难以进行。此时,无论是函数公式、多重合并数据区域透视、Power Query,还是VB,也难以胜任要求如此严格的任务。但是,通过灵活多变的SQL语句,便能够较好地解决表格设计不统一的问题。最常见的SQL语句是Select查询语句,关键字为Select from [Data$]。其中,Data表示一个或多个工作表,数据来源既可以是数据库,也可以是现有文件。在工作表名称后需要添加美元符号“$”,且必须置于方括号[]中,才能完整表示查询表格。该语句可用来表示检索名称为Data的表中的数据信息。

6

常见查询语段示例如下1.查询名称为Data的表中的所有字段的数据:Select * from [Data$]星号“*”表示查询所有字段的数据。2.查询名称为Data的表中的“销售员”和“销量”两个字段:Select [销售员],[销量] from [Data$]注意:字符串之间用空格隔开,字符字段名称本可不加方括号,如果当字段名称中间存在空格、字段名保留名称等特殊情况时,就必须添加方括号;在查询时,不对字段名称的前后顺序做任何要求。SQL默认全部字段大写,但对输入过程中的字母大小写不敏感,若希望保留原来的输入形式,请用双引号连接该字符。为提高语句的可读性,各字句之间一般要分行显示,并采用缩进的形式。3.查询名称为Data的表中销售员Lily的销售信息Select * from [Data$]Where 销售员='Lily'注意:Where为过滤语句中的关键字,也是Select语句的子句,用来根据指定搜索条件筛选合适数据。但Where子句只能用来过滤指定的行,而无法过滤出Groud by创建的组。条件与条件间通过“And”、“Or”和“Not“连接,分别表示“并且”、“或”和“非”的关系;条件格式为:[字段名]=“具体内容”,此外,操作符也可以是“=”、“>”、 “<”、“>=”、“<=”;但如果是模糊查询就应该用“Like”进行连接,比如,【销售员 like '%Lily%'】 ;如果是同一个字段的多个值可以用关键字“In”进行连接,例如,【销售员 in ('Lily','Cherry')】。4.查询名称为Data的表中销售员Lily销售总额Select 销售员,Sum(销量) as Lily总销量from [一组$] Where 销售员='Lily' group by 销售员注意:进行汇总的时候,可以直接用Sum(求和)、Avg(平均)、Count(计数)、Max(最大值)等聚集函数,也可用Group by(分组)和Order by(排序)分组数据;在select中出现的字段,如果这个字段是汇总字段,则这个字段必须加到Group by里面;Sum函数是求和函数;As用来重命名字段。5.查询名称为Data的表中D5:F200区域的数据中销售员和销量两个字段Select [销售员],[销量] from [Data$D5:F200]注意:在Data$后面添加区域地址,若不清楚最后一行行数,或为了让数据区域呈动态显示,可省略最后一行的行号,如:Select [销售员],[销量] from [Data$D5:F]

7

6.查询名称为一组、二组、三组三个表中的所有数据Select '一组' as 数据来源,* from [一组$] union all Select '二组' as 数据来源,* from [二组$] union all Select '三组' as 数据来源,* from [三组$]注意:若需要合并表格,则用union all进行连接,但一般不能超过50个。在输入SQL语句时,各种符号一定要在英文状态下输入;如果使用星号“*”,那几个表中的数据字段顺序要一致、数据区域大小要一致,如果直接指定字段名称,则不受此限制。7.查询名称为一组、二组、三组三个表中销售员Lily和David的所有数据select * from (Select * from [一组$] union all Select * from [二组$] union all Select * from [三组$]) where 销售员 in ('Lily','David')注意:本嵌套查询语句,表示从查询结果中再次查询,也就是由里向外顺序查询数据。8.查询名称为Data的表中的所有字段的数据并按照日期排序Select * from [Data$] order by 日期注意:排序时用order by,一般默认是升序排列,但加上DESC可表示降序,DESC是descending的缩写。降序示例:order by 日期 Desc

8

在以上情况下,SQL语句内容为:【select '1组' as 销售组,销售员,产品,日期,销量 from [1组$] union all select '2组' as 销售组,销售员,产品,销售日期,数量 from [2组$B2:E] union all select '3组' as 销售组,Sales,Product,Date,Quantity from [3组$B5:E]】

推荐信息