Excel函数学习:悟空百问の015:详细解析把多列数据合并为一列数据的高阶函数
可能是上一课的课程重点是分摊了三种情况下的分列数据的合并,把最后一种高阶函数简单的说了下就结束了。有点烂尾了,刚好又有朋友指出了这一点,今天就来深入解析这个函数,没看懂的今天大饱眼福,来细细的解读这串代码。
本期重点
函数在此:
=IFERROR(OFFSET(XXB1!$A$1,MOD(ROW(XXB1!A1)-1,COUNTA(XXB1!A:A)),IF(INT((ROW(XXB1!A1)/COUNTA(XXB1!A:A))<8,INT((ROW(XXB1!A1)/COUNTA(XXB1!A:A)),"")),"")
效果展示:
效果展示
首先这串代码分为几个层次:
=IFERROR(函数A,"")
函数A=OFFSET(函数B,函数C,函数D,“”)
函数B=XXB1!$A$1
函数C=MOD(ROW(XXB1!A2)-1,COUNTA(XXB1!A:A))
函数D=IF(函数E<8,函数E,"")
函数E=INT((ROW(XXB1!A1)/COUNTA(XXB1!A:A))
总的概括下此函数的逻辑:
创建一个以A1为起始的一个引用区域,横向执行函数E(每列获取非空单元格数的列值),纵向获取值为函数C(连续获取1-5,1-5的列值),最后呈现出来的结果就是把A列,B列,C列连续的获取在我们所需的A列中。
重点概述:
1.IFERROR函数解析
=IFERROR(函数A,"")
IFERROR函数正如其词义一样,就是判断错误函数,当函数正常时得函数所获得值,当函数错误时,获得第二参数值。这里要了解的地方就是IFERROR的结果是对或者错,所以当第一个参数是判断语句时,得到的答案是对错。
2.OFFSET函数解析
函数A=OFFSET(函数B,函数C,函数D,“”)
OFFSET函数,简单的来就是创建一个引用区域,然后包含四个参数ABCD,A代表的是这个区域的左上角第一个值,B是向下(正数)或者向上(负数)偏移的行数,C是向右(正数)或者向左(负数)偏移的列数,CD是获取的区域,1,1就是获取一个单元格,不写的时候默认是1,1,获取的是一个单元格内容。
简单实操一下获取一个名叫香港的美丽地方。
OFFSET函数解析
3.函数C解析
函数C=MOD(ROW(XXB1!A2)-1,COUNTA(XXB1!A:A))
这列先说MOD函数是求余数函数,两个参数分别是A和B。
A=ROW(XXB1!A2)-1
A求得的结果是每行的行值-1,获得一个列为123456的行值
B=COUNTA(XXB1!A:A)
B求得结果是获取A列的非空单元格的数量。
用A去取B的余数,获得的数组结果就成了:
1/N=1 2/N=2 3/M=3 直至 N/N=0
N+1/N=1 N+2/N=2 N+3/N=3 直至 N+N/N=0
获得结果是一个1至N然后0至N的循环结果,这就是后面要连续取行值循环做准备。
效果展示
4.函数D解析
函数D=IF(函数E<8,函数E,"")
这个简单来说就是判断抵达第八列,就结束,没到第八列就继续取值,直至第八列结束。
5.函数E解析
函数E=INT((ROW(XXB1!A1)/COUNTA(XXB1!A:A))
INT函数是向下去最近一个整数,2.5INT取值是2,然后通过行值减去0.1除以本行的非控制的个数,获取的值就是一列有1111,2222,3333,4444,的循环数列,然后通过这个信息来向右进行偏移。获得我们需要的值。
函数效果
收尾
此篇是上一篇的精华解析版,讲述这个分列数据的整个单列数据的事宜。请大家细细阅读,好好学习。加油哦~