excel如何将多行数据转换为一列(多行内容用公式合并为一行)
导语:Excel多行数据怎么用公式快速将它转换成一列来显示
之前作者有介绍了将多行多列数据转换成一列,同样是对多行数据的转换,但不同点在于,那篇文章讲的是按照列的顺序,来将数据排列成一列。
而今天的课题是从行开始,一行一行的进行转换,使所有数据全部转换成为一个竖列。
今天我们就来学习一个公式,通过这个公式来达成转换的目的。
首先,作者先上公式:=INDEX($A$1:$F$18,INT(ROW(A6)/6),MOD(ROW(A6),6)+1)
看这个公式,使用的是index函数来引用,它的第1参数是引用区域,第2参数是要返回的行序号,第3参数是要返回的列序号。
先来捋一下它的逻辑思路,由于数据表中包含了6列18行,我们的转换顺序是从第1行开始,转换成1列,再接着继续转换第2行,那么,这里就有两个知识点,其实也就是index函数的第2、第3参数的设置。
第一,每行有6列数据,也就是6个单元格,从第1行第1个单元格开始到第6个单元格结束后,又要从第2行第1个单元格开始。因此,它实质上是1-6的一个循环!如果有一个公式,可以进行1-6的循环,就能将一行的6个单元格数据进行引用。那在这里,它执行的是index函数列序号的循环,即index函数第3参数的设置。公式为:=MOD(ROW(A6),6)+1
这个公式怎么理解?
mod是求余数的函数,例如mod(3,2),即3除以2,余数是1,所以结果为1.
而row函数的作用是返回行序号,其结果会单元格的变动而变动,比如row(A1)等于1,row(a2)等于2.
那么MOD(ROW(A6),6)+1,它的结果就是mod(6,6)+1,6除6余数为0,加上1,则结果为1.当向下填充公式时,ROW函数的参数是A7,而row(a7)等于7,mod(7,6)余数为1,加上1的结果为2;而填充6次以后,到第7个单元格,即row(12),等于12,mod(12,6)的余数是0,加上1结果为1.
所以,它的结果就是从1-6的持续循环。
第二,当解决了从第一行的第1个单元格到最后一个单元格的循环引用,我们还需要跳转到第2行,否则就是第1行的“单击游戏”了。所以,index函数公式需要保持,当列序号开始1-6的循环时,第2参数的行序号则要保持不变,或者是重复6次行序号为1.公式为:=INT(ROW(A6)/6)
这里我们要理解int函数的含义,它是一个向下取整函数,即将不足1的数字取整为1,所以这个公式较易理解,6/6等于1,7/6等于一点几,用int函数向下取整,结果仍然是1;只有当公式向下填充到第7个单元格,即row(12)/6时,也就是12/6,等于2,这时公式开始从2进行重复。
从上面的公式看,能否理清这两句话的含义:“从1-6进行循环”,“从1开始重复6次”。
我们将这两句话的公式套进index函数公式中,再去理解每个参数的含义。
当我们向下填充公式到第7个单元格时,这时index函数的第2参数是INT(ROW(A12)/6),row(a12)的结果是12,除以6等于2,再用int函数取整,结果为2.所以这时index函数公式的行序号为2,即从引用区域的第2行开始。
第3参数是MOD(ROW(A12),6)+1,row(a12)等于12,mod(12,6)的余数是0,再加上1,因此结果为1,所以第3参数列序号为1.
那么综合一下,index($A$1:$F$18,2,1)的含义就是引用$A$1:$F$18单元格区域的第2行第1列数据。
当输入完公式,我们还需要嵌套一个逻辑函数iferror;因为数据较多时,无法一次性将公式填充到合适的位置,而会出现一些错误值,套上iferror函数来忽略错误值并显示为空值。
最后,我们来总结一下,关于多行多列转一列的关键点在于指定序号间的循环往复,和指定次数重复序号。在这种循环和重复的场景中,row函数搭配int和mod函数,是解题的钥匙。所以搞清每个函数的基本含义和基本用法,是excel进阶学习的基础!
本文内容由快快网络小薇整理编辑!