下图左表是数据源,记录的是各部门人员的信息。其中相同部门的数据是排在一起的,现在的要求是在不同部门间插入空行。结果如右表所示。 ![]() 有了365新函数,这个问题也很简单。公式如下图所示。主要用到循环迭代函数reduce,数组合并函数vstack,去重函数unique和筛选函数filter。 ![]() ![]() reduce的初始值是A2:C2的表头,要循环迭代的数组就是不重复的部门列表。第一次循环的是"技术部",先用filter筛选出数据源中"技术部"的所有记录,然后用vstack将[表头,"技术部"的所有记录,""]合并起来,作为第一次循环的结果,也是下一次循环的初始值。 vstack的第3参数"",其实就是在"技术部"的所有记录后插入一个空行。 第二次循环的是"人事部",还是先用filter筛选出数据源中"人事部"的所有记录,然后用vstack将[上一次循环的结果,"人事部"的所有记录,""]合并起来,作为第二次循环的结果。 拓展思考 ![]() 比如,第一个出现的部门是"销售部",那就先把"销售部"的所有记录排列在一起,第二个出现的部门是"生产部",再把"生产部"的所有记录排列在一起,放在"销售部"的下面,以此类推。 其实,这个问题之前也分享过,可以看《排序技巧4:按先后顺序把同类项排在一起》这篇文章。当时用的是match函数。 ![]() |
|