分享

单列分组,PQ是真的强,函数也不遑多让!

 我爱学Excel 2023-06-06 发布于湖北

问题比较简单,我们直接来看!登记组别信息的时候等级在了一列,现在想整理成右侧的表要如何处理?你有几种思路?我给大家写几个打个样把

图片

▍辅助列 VLOOKUP

这种方法步骤要多一些,但是对新手和版本兼容性较好,我们首先添加一列辅助列为组别,把组别提取出来

简单的IF函数,应该都没有问题,思路是如果A列是组别,就返回组别名称,否则返回B列上一个单元格内容,有点迭代的思路在!

=IF(RIGHT(A1)='组',A1,OFFSET(B1,-1,))

图片

第二步处理,其实就变成了1对多取数问题了,前两天正好我们分享过

飞机票直达--->>  一个辅助列让Excel查询直接起飞!

没看过的也没关系,我们直接来写吧,1对多对新手太难,可以转成1对1,VLOOKUP大家最熟悉,轻松松松!

=B1&COUNTIF($B$1:B1,B1)
图片

下面大家就比较熟悉了,相当于查询唯一值了,每个组都有一个唯一的序号!完美搞定!
=IFERROR(INDEX($A:$A,MATCH($E1&COLUMN(B1),$C:$C,)),'')
图片

上面的方法虽然通用性好,但是很多有函数基础的同学可能觉得步骤多,有点冗余了,那么我们推荐使用下面公式法,直接搞定!

▍函数一式搞定
▼拆分函数轻松搞
=TEXTSPLIT(
    CONCAT(IF(RIGHT(A1:A14)='组',';',',')&A1:A14),
    ',',';',1,,''
)
这里更多的是利用TEXTSPLIT函数,可以按行和列拆分的特性!当然你也可以使用REDUCE函数去堆,这个评论区会有大佬分吧!
图片

当然除了365函数的写法外,PowerQuery搞这个更是轻松,最近正好一直在更新Table.Group,今天这个案例正好派上用场了!

▍PowerQuery-M函数
如何加载到PQ编辑器这些基础的操作,我们就不再一一演示了,直接来看M函数如何书写!
这里用的就是Table.Group的局部分组了,Table.Group的局部分组才是这个函数的灵魂,可以让我们分组更加随心,不同于大部分的完全相等分组。
图片
加载到工作表后的效果!
图片
其实写到这里,已经是2023年6月6日00:22:31,有点累了,不过每次出个解题,总有同学各种秀我一脸……
VBA的写法,我们也大概写一下,比较简单!

▍VBA解法
VBA的解法比较简单,由于数据较少,数组我们也没有使用直接使用一个for循环搞定,这里更多的是思路问题,什么时候新增一行,同时重置一下写入的开始列!
图片
我们就先抛转这些,希望能引来大佬们的“玉”!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多