excel如何快速汇总不同sheet中的所需数据?
2020-08-19 · 知道合伙人软件行家
用Power Query的追加查询最简单快捷。
在8.1工作表中,光标定位到数据区域,数据菜单——获取或转换数据——自表格或区域,Excel会自动把区域转换为表格,并启动Power Query,在Power Query中,只需要一个步骤即可——选择编号列,点标题行中的“编号”左侧标有123(Power Query自动把编号转换为数字了)的地方,从下拉列表的数据格式中选择“文本”,把编号还原为文本。弹出警示对话框时确认替换即可。然后点“关闭并上载至”,弹出的上载类型(默认为“表”)中,选择“仅连接”,确定。
2. 同样将8.2创建为连接表
在Power Query中,会把两个创建连接表定义为“表1”、“表2”的名称,为了便于识别,可修改为“8_1”、“8_2”,或别的名称(根据个人偏好)。
3.任意选择一个连接表,双击或右击后选择编辑,重新进入Power Query界面
4. 进入Power Query后,开始菜单——追加查询——将查询追加为新查询
如果有3个以上的表要追加,就在上图的“追加”中选择“3个或更多表”
5. 确定后,Power Query就把2个表追加成一个新的查询表了,并自动给出名称“Append1”,现在把重命名为“未到货”,并在文件菜单中选择“关闭并上载”(也可以选择“关闭并上载至”-再选择新的工作表中上载数据),把筛选后的数据上载回Excel的新工作表中,再把这个新的工作表重命名为“未到货”
编写文字说明、截图等花了超过半个小时,但实际操作熟练的话,应该可以1~2分钟内完成,甚至秒成。更好的方法是把查询结果作为一个新的工作簿,这样就可直接把数据源工作簿一次导入,而不要一个个工作表来创建连接,且工作簿中增加或删除了工作表时,可直接刷新,而上面的方法则要在Power Query中编辑创建的追加查询来增加或减少工作表。
在《未到货》的A2输入
=IF(ROW(1:1)<=COUNTIFS('8.1'!$B:$B,"<>"&"",'8.1'!$F:$F,""),INDEX('8.1'!A:A,SMALL(IF(('8.1'!$B$1:$B$100<>"")*('8.1'!$F$1:$F$100=""),ROW($1:$100),4^8),ROW(1:1))),INDEX('8.2'!A:A,SMALL(IF(('8.2'!$B$1:$B$100<>"")*('8.2'!$F$1:$F$100=""),ROW($1:$100),4^8),ROW(1:1)-COUNTIFS('8.1'!$B:$B,"<>"&"",'8.1'!$F:$F,""))))
数组公式,输入后先不要回车,按Ctrl+Shift+Enter结束计算,再向右和向下填充。
1、你的抓图公式里面的引用,跟我给你的位置不一样。你原来的“到货数”是在F列,但你的公式怎么变成C列了?
2、无法一下子引用一个月(31张工作表)的数据,只能用基本公式=INDEX('8.1'!A:A,SMALL(IF(('8.1'!$B$1:$B$100<>"")*('8.1'!$F$1:$F$100=""),ROW($1:$100),4^8),ROW(1:1)))分别修改引用工作表名称并分步插入公式。