分享

家人们,面对多列合并问题,敢不敢死磕这个最常用的技巧?

 EXCEL应用之家 2024-05-12 发布于上海

欢迎转发和点一下“看”,文末留言互动!

置顶公众号或设为星标及时接收更新不迷路



小伙伴们好,实际工作中我们经常会遇到下面这样的情况,将两列(或多列)数据合并为一列。数量掌握这类题目的解题技巧无疑将大大提高效率。

原题目是这样子的:



看到这个题目,朋友们会想到用什么方法来解决呢?


01

多维引用



在单元格D2中输入下列公式,三键确认后向下拖曳即可。

=INDIRECT(TEXT(SMALL(ROW($A$2:$A$8)/1%+COLUMN($A:$B),ROW(A1)),"r0c00"),)
ROW($A$2:$A$8)/1%

由于是横向提取数据,所以需要对行号赋与较大的权重。上面的这本部分就是这个目的,它将行号扩大了100倍。

ROW($A$2:$A$8)/1%+COLUMN($A:$B)

再加上列号。

SMALL(ROW($A$2:$A$8)/1%+COLUMN($A:$B),ROW(A1))

依次提取第1、2、3小的值。这里SMALL函数返回的结果是“201”。

TEXT(SMALL(ROW($A$2:$A$8)/1%+COLUMN($A:$B),ROW(A1)),"r0c00")

TEXT函数将其转换为“r0c00”的形式,这个是必须,以便下面嵌套INDIRECT函数。

INDIRECT(TEXT(SMALL(ROW($A$2:$A$8)/1%+COLUMN($A:$B),ROW(A1)),"r0c00"),)

最后INDIRECT函数返回对应的值。

两列/多列合并,有很多种方法可以使用。但无论数据结构如何,是否要求去重,多维引用的技巧都是适用的。它也是最常用的函数方法之一。


02

INDEX函数法

这道题目其实源数据是有特点的。根据源数据的特点,我们可以考虑使用INDEX函数,只要提供其第1、2参数即可。

根据题意,第一参数需要1,1,2,2,3,3..这样的数列;而第二参数需要1,2,1,2,1,2..这样的序列。



在单元格D2中输入下列公式,确认后向下拖曳即可。

=INDEX($A$2:$B$8,INT((ROW(A1)-1)/2)+1,MOD(ROW(A1)-1,2)+1)
INT((ROW(A1)-1)/2)+1

这部分返回1,1,2,2,3,3..这样的数列。

MOD(ROW(A1)-1,2)+1

这部分返回1,2,1,2,1,2..这样的序列。

INDEX($A$2:$B$8,INT((ROW(A1)-1)/2)+1,MOD(ROW(A1)-1,2)+1)

最后由INDEX函数返回正确的数据。


-END-

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多