Excel整理小组数据,函数简单,Power Query灵活,VBA自动化!

职场   教育   2024-06-17 09:17   江苏  

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


▍辅助列+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的局部分组才是这个函数的灵魂,可以让我们分组更加随心,不同于大部分的完全相等分组。
加载到工作表后的效果!
VBA的写法,我们也大概写一下,比较简单!

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

课程推荐

▍课程 | Excel全系列教程合集 🔥
▍会员 | 再升级!终生学习第六期🔥🔥🔥
代码 | VBA常用代码合集🔥
课程 | Power Query从入门到来不及放弃 🔥🔥🔥



Excel办公实战
Excel函数、VBA、PBI等全系列教程第一人。助你轻松实现办公自动化!宗旨:易办公◎早下班!
 最新文章