今天老板交给小王一份文件要求他把文件中的多列数据转为一列显示,而且转换时要先列后行,下面大家分享一下小王的操作过程吧!
如下图,是小王收到的一份外出学习名单,名单姓名是多列数据,现在想要把它转换成一列排列,而且要录入时要先列后行。就像图片右边的数据那样
小王在F2单元格输入公式=IFERROR(INDEX($A$2:$D$10,MOD(ROW(A1)-1,9)+1,INT(((ROW(A1)-1)/9))+1)&"",""),并下拉填充直至出现空白单元格为止。
上面演示的是数据是一个4列9行数据区域,可如果数据是下图这样又该怎么处理呢?
只需要将F2中的公式改为=IFERROR(INDEX($A$2:$E$11,MOD(ROW(A1)-1,10)+1,INT(((ROW(A1)-1)/10))+1)&"","")即可
下面跟大家简单分析一下这个公式,首先是INDEX函数,INDEX函数是返回表或区域中的值或值的引用。
为了方便大家理解我们实际演示一下,比如我现在想要引用A列数据内容,在单元格输入=INDEX(A:A,ROW(A1))下拉即可
理解了INDEX函数,如果我们想要将文中5列10行数据排成一列,那么我们的行号就应该是1,2,3,……10,1,2,3……10这种序列。列号就是十个一,十个二,这种序列,公式中MOD(ROW(A1)-1,10)+1的作用就是生成这种行序列。如下图输入=MOD(ROW(A1)-1,3)+1,即可生成1,23,1,23这种序列
INT(((ROW(A1)-1)/10))+1)在公式中的作用就是生成十个1,十个2,十个3这种列序列,如下图在单元格中输入INT(((ROW(A1)-1)/10))+1)
IFERROR 函数其含义是如果公式的计算结果为错误,则返回指定的值;否则将返回公式的结果。此公式中的作用就是姓名提取完后返回空单元格。