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

▍辅助列 VLOOKUP 这种方法步骤要多一些,但是对新手和版本兼容性较好,我们首先添加一列辅助列为组别,把组别提取出来 简单的IF函数,应该都没有问题,思路是如果A列是组别,就返回组别名称,否则返回B列上一个单元格内容,有点迭代的思路在! =IF(RIGHT(A1)='组',A1,OFFSET(B1,-1,))

第二步处理,其实就变成了1对多取数问题了,前两天正好我们分享过 飞机票直达--->> 一个辅助列让Excel查询直接起飞! 没看过的也没关系,我们直接来写吧,1对多对新手太难,可以转成1对1,VLOOKUP大家最熟悉,轻松松松! 下面大家就比较熟悉了,相当于查询唯一值了,每个组都有一个唯一的序号!完美搞定!=IFERROR(INDEX($A:$A,MATCH($E1&COLUMN(B1),$C:$C,)),'') 上面的方法虽然通用性好,但是很多有函数基础的同学可能觉得步骤多,有点冗余了,那么我们推荐使用下面公式法,直接搞定! CONCAT(IF(RIGHT(A1:A14)='组',';',',')&A1:A14), 这里更多的是利用TEXTSPLIT函数,可以按行和列拆分的特性!当然你也可以使用REDUCE函数去堆,这个评论区会有大佬分吧!当然除了365函数的写法外,PowerQuery搞这个更是轻松,最近正好一直在更新Table.Group,今天这个案例正好派上用场了!如何加载到PQ编辑器这些基础的操作,我们就不再一一演示了,直接来看M函数如何书写! 这里用的就是Table.Group的局部分组了,Table.Group的局部分组才是这个函数的灵魂,可以让我们分组更加随心,不同于大部分的完全相等分组。 其实写到这里,已经是2023年6月6日00:22:31,有点累了,不过每次出个解题,总有同学各种秀我一脸…… VBA的解法比较简单,由于数据较少,数组我们也没有使用直接使用一个for循环搞定,这里更多的是思路问题,什么时候新增一行,同时重置一下写入的开始列!
|