EXCEL中COLUMN函数的初级及中高级应用介绍
COLUMN函数是EXCEL中的一个基本函数,在查找和数据计算中经常会用到。这个函数的作用是返回指定单元格引用的列号,这个函数经常和文件函数、查询函数一起使用,比如和VLOOKUP、LOOKUP等嵌套使用,可以起到非常灵活的作用。
当需要此函数返回的结果为一个数的时候,实质上是一个包含一个元素的数组,比如COLUMN(A1),标准的返回结果为{1},一般情况下不影响使用。
先来看看它的基本用法:
图中C2单元格中的公式为"=COLUMN()",直接返回单元格的列号3;C3中的公式为"=COLUMN(D2)",由于公式中引用的单元格是D列,所以返回4;C4中的公式为"=COLUMN(D3:H8)",返回引用区域中最左侧列列号4。
下面举一些COLUMN函数和其他函数组合的案例。
1. 和VLOOKUP函数的组合使用
= VLOOKUP($A$8,$A$2:$F$5,COLUMN(),0)
公式中的COLUMN为当前列,将公式向右拖拉填充时可以避免多次输入。
2. 和SUM函数组合进行隔列求和计算
如下图所示,要求分别计算出产品的生产总数和入库数量。分析一下表的数据结构,实际上就是计算隔列求和的问题。
总生产数:
= SUM((E2:J2)*(MOD(COLUMN(E2:J2),2)=1))
总入库数:
= SUM((E2:J2)*(MOD(COLUMN(E2:J2),2)=0))
本例中利用COLUMN函数取出列号进行数组运算,COLUMN(1:1)在数组中表示{1,2,3,4,5,6,7,……}的数组。
COLUMN(E2:J2)在数组公式中返回数组{5,6,7,8,9,10}
MOD函数用来判断奇偶,返回FALSE或TRUE,以达到隔列计算的效果。
3. 取出列号的英文字母
和SUBSTITUTE、ADDRESS等函数组合可以取出列号的英文字母:
= SUBSTITUTE(ADDRESS(1,COLUMN(),4),1,)
4. 取出字符串中的数字
如下图所示,要求提取说明文字前后的数字:
=-LOOKUP(1,-RIGHT(A2,COLUMN(A1:K1)))
=-LOOKUP(1,-LEFT(A3,COLUMN(A1:K1)))
我们可以用F9来逐步返回值,看看这个函数的运行机理:
选择COLUMN(A1:K1),按F9,可以看到返回值为:
{1,2,3,4,5,6,7,8,9,10,11}
注:使用A1:K1,是为了使数组长度大于OFFICE2013的长度。
选择RIGHT(A2,COLUMN(A1:K1)),按F9可以看到返回值为:
{"3","13","013","2013","E2013","CE2013","ICE2013","FICE2013","FFICE2013","OFFICE2013","OFFICE2013"}
再选择-RIGHT(A2,COLUMN(A1:K1)),按F9后可以看到返回值为:
{-3,-13,-13,-2013,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!}
至此,这个函数的机理应该就比较清楚了。如果对LOOKUP有查询机理不清楚,可以查看本人以前总结的一篇文章:
明明白白我的心-LOOKUP函数的"0/"查询原理详解