[已解决] 如何用Query实现此sumif函数的隔列汇总功能

  [复制链接]
查看124994 | 回复127 | 2020-9-16 05:12:46 | 显示全部楼层 |阅读模式
sumif有一个如下的功能,实现隔列分类统计的功能。最终希望能将1月到3月的计划和实际分别汇总。用函数=SUMIF($C$3:$H$3,I$3,$C4:$H10)
能够实现此功能。



但是实际情况因为数据量较大,只能用Query来实现。且碰到这类的表格源数据有合并格子的问题,给数据清洗带来难度。

请问此功能用Query如何实现?




sumif函数实现方法
9864012101471.jpg
9864012101473.rar (9.22 KB, 下载次数: 0)
回复

使用道具 举报

劲秋 | 2020-9-16 05:19:47 | 显示全部楼层
我觉得只能拆能透视表在弄。
回复

使用道具 举报

乱熊 | 2020-9-16 05:25:47 | 显示全部楼层
  1. let

  2.   Source = Excel.CurrentWorkbook(){[Name="表2"]}[Content],

  3.   Custom1 = Table.PromoteHeaders(Table.Transpose(Table.CombineColumns(Table.FillDown(Table.Transpose(Source),{"Column1"}),{"Column1","Column2"},each Text.Combine(_,"-"),"x"))),

  4.   Custom2 = Table.AddColumn(Custom1,"合计-计划",each List.Sum(List.Transform({2..Table.ColumnCount(Custom1)-1},(x)=>if Text.Contains(Table.ColumnNames(Custom1){x},"计划") then Record.FieldValues(_){x} else 0))),

  5.   Custom3 = Table.AddColumn(Custom2,"合计-实际",each List.Sum(List.Transform({2..Table.ColumnCount(Custom1)-1},(x)=>if Text.Contains(Table.ColumnNames(Custom2){x},"实际") then Record.FieldValues(_){x} else 0)))

  6. in

  7.   Custom3
复制代码
回复

使用道具 举报

sherri | 2020-9-16 05:27:47 | 显示全部楼层
我觉得只能拆能透视表在弄。


因为同时有10个这样的excel文件,需要从这相同格式的10个文件中抓取数据,实现汇总。还是用Power Query来实现感觉靠谱一点。

您说的透视表怎么做法?
回复

使用道具 举报

斌仔 | 2020-9-16 05:35:47 | 显示全部楼层
2维表转为一维表再透视,query整理数据,pivot做报表字段计算,如果不用pivot就需要在query里再做一步,将实际和计划列逆透视下来,考虑有可能增加增加别的月份列,query里处理列的增加变化会比较麻烦,所以放pivot里用计算字段方法处理,

9864012101474.rar (71.6 KB, 下载次数: 0)
回复

使用道具 举报

zhanghaiming | 2020-9-16 05:37:48 | 显示全部楼层
let
  源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
  自定义1 = 源,
  已添加自定义 = Table.AddColumn(自定义1, "自定义", each Table.FromRows({List.Transform(List.Zip(List.Split(List.Skip(Record.ToList(_),2),2)),each List.Sum(_))},{"计划总计","实际总计"}) ),
  #"展开的“自定义”" = Table.ExpandTableColumn(已添加自定义, "自定义", {"计划总计", "实际总计"}, {"计划总计", "实际总计"})
in
  #"展开的“自定义”"
回复

使用道具 举报

极速 | 2020-9-16 05:46:48 | 显示全部楼层
let

  源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
  自定义1 = 源,
  已添加自定义 = Table.AddColumn(自定义1, "自定义", each Table.FromRows({List.Transform(List.Zip(List.Split(List.Skip(Record.ToList(_),2),2)),each List.Sum(_))},{"计划总计","实际总计"}) ),
  #"展开的“自定义”" = Table.ExpandTableColumn(已添加自定义, "自定义", {"计划总计", "实际总计"}, {"计划总计", "实际总计"})
in
  #"展开的“自定义”"

9864012101475.rar (16.19 KB, 下载次数: 0)
回复

使用道具 举报

henry | 2020-9-16 05:49:48 | 显示全部楼层
9864012101472.jpg 两个建议
1. Excel公式的思路虽然灵活,但无法处理大数据,而且从源头上这种表格也不是结构化的数据存储方式,如果要转BI,从源头上就要尽可能避免使用这种结构。
2.如果用了这种结构怎么办。用PQ处理一下就可以了,上面已经有两位给了很好的方法,我想补充的是,即使你不会写那些复杂的公式,用鼠标点一点也能完成这个任务,上面的结果就是鼠标操作的,处理成这个样子就可以了。
回复

使用道具 举报

小白net | 2020-9-16 05:53:48 | 显示全部楼层
因为同时有10个这样的excel文件,需要从这相同格式的10个文件中抓取数据,实现汇总。还是用Power Query来 ...


我就知道sql语言能做,具体的还不代码怎么写。 不过现在学了pq 知道怎么弄了。不sql省不少事
回复

使用道具 举报

zl8850038 | 2021-6-11 12:13:36 | 显示全部楼层
围观 围观 沙发在哪里!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则