PQ-批量汇总多Excel表格之特殊处理:标题行前行数不确定的处理
标准Excel表格批量汇总过程及基础方法请参考文章:《PQ批量汇总Excel文件就是这么简单》,所有特殊情况处理都是在该基础方法之上加以适当的处理而已。小勤:好烦啊,公司里有些让人填的表,有的在表头了加一行,有的又把我们设定的行给删除了,结果交上来的数据有的表头前2行,有的3行,而且里面各种杂乱说明备注……,像这种表怎么汇总啊?
大海:那你说,这有什么明确的规则能确定标题行开始的地方吗?小勤:能不能通过搜索的方式来确定标题从哪一行开始?这还是基本有规律的,比如如果第一列里有“姓名”字样的,那肯定就是标题行了。
大海:好吧。如果这样的话,这个问题处理起来也不太复杂。PQ里有一个函数,可以让你对表进行搜索并确定位置:Table.PositionOf。小勤:啊。这个是不是跟Text.PositionOf类似的?大海:可以这么说吧。反正就是按条件找到对应的位置。比如我们找第一列里内容为姓名的位置:= Table.PositionOf( [Data], [Column1="姓名"], Occurrence.First, "Column1")
小勤:这个函数参数看起来虽然有点儿多啊,分别都是什么意思?大海:其实理解起来也不难:第1个参数就是在哪个表里找第2个参数是找什么样的内容(一个行记录,可以有多项内容)第3个参数是找匹配的第一个?所有?还是最一个?第4个参数是匹配的条件(比如第2个参数里的记录有多个列时,是只匹配其中一个列?还是几个列?)小勤:还能多列匹配?大海:对啊。比如你如果要求第1列里找到“姓名”,第2列找到“公众号”才算,那可以改为:
小勤:这样的话判断起来就相对灵活了。大海:对的。再回到这个批量汇总数据的问题,还记得前面的文章《PQ-批量汇总多Excel表格:标题都从第n行起怎么办?》吗?小勤:当然啊。现在也简单了,通过Table.PositionOf找到标题行所在的位置,再用Table.Skip函数跳过相应的行数,然后提升标题行,综合起来就是:= Table.PromoteHeaders( Table.Skip( [Data], Table.PositionOf( [Data], [Column1="姓名"], Occurrence.First, "Column1" ) ))
大海:对的。复杂问题其实都是由简单问题组成的,梳理清楚,一个一个的解决掉,然后再组合在一起就是了。- 热门文章 -批量导入并整合pdf数据做分析,用Power BI小意思啦!将12个月的数据汇总到一起?带着多重表头也没事!PQ实战小案例:商品目录明细规范化,以后再也不需要重复劳动了!天了噜,原来月历只是一个数据透视表!15秒极速数据可视化,Power BI就是这么牛!赞!这样的数据实现动态拆分也这么容易!这个超酷炫图是怎么做出来的?简单到我连录个动画装个X都不想!麦肯锡发明的瀑布图,用Power BI轻松做出来!盘点2018年,创效最大的竟然是这个简单又Low到爆的柱形图!牛!微软Power BI再进步,保持最佳市场领导地位!- 最通俗易懂Power系列视频 -【★★★★★好评】【4万+播放人次】