欢迎转发和点一下“在看”,文末留言互动! 置顶公众号或设为星标及时接收更新不迷路 小伙伴们好,实际工作中我们经常会遇到下面这样的情况,将两列(或多列)数据合并为一列。数量掌握这类题目的解题技巧无疑将大大提高效率。 原题目是这样子的: 看到这个题目,朋友们会想到用什么方法来解决呢? 多维引用 在单元格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函数返回对应的值。 两列/多列合并,有很多种方法可以使用。但无论数据结构如何,是否要求去重,多维引用的技巧都是适用的。它也是最常用的函数方法之一。 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- |
|