我这里说的组合函数就是多个函数配套使用的情况,很多函数的参数中存在第几行、第几行,第几个等情况,像常用的Vlookup、Hlookup、Index、Offset、Address、Large、Small等等结合使用,使用的范围是非常广的,也是非常频繁的。
一、column()函数和row()函数的语法
column()函数是返回所在的列标,参数数可以是单元格,也可以是一个区域,比如column(A1)=1,column(A1:A6)=1,column(A:A)=1
row()函数是返回所在的行标,参数数可以是单元格,也可以是一个区域,比如row(A1)=1,row(A1:C1)=1,row(1:1)=1
下面以ROW函数为例,column()函数用法类似,只不过列标是字母,行标是数字的区别,比如表示整列为A:A(第一列)或C:C(第3列)用字母来表示,表示整行是1:1(第一行)或2:2(第二行)
二、与VLOOKUP函数、HLOOKUP函数、INDEX函数的结合使用
VLOOKUP函数和HLOOKUP函数的第3个参数是第几列和第几行,INDEX函数的第2个和第3个参数是第几行、第几列,我们可以把这些位置的参数用column()函数和row()函数来替换,如果表比较大的时候我觉得还是很好用的。
下面我就用VLOOKUP和INDEX函数来举个例子,HLOOKUP用法类似,只不过是VLOOKUP主要选择与column函数组合,HLOOKUP主要和ROW函数进行组合,如果直接用column()函数和row()函数返回结果不合适,可以通过column()加减数字或row()函数加减数字来实现。
与VLOOKUP函数结合使用
与INDEX函数结合使用
三、与SMALL函数、LARGE函数的结合使用
SMALL函数和LARGE函数的语法是基本一样的,(区域,第几大或第几小),如果表示从一组数据中找出前十大来,我们就可以用column()函数和row()函数来配合使用
四、与SUM函数结合实现隔行或隔列求和
这个其实是利用了行号或列号用MOD()求余来实现的,比如下面的例子:
在N3单元格输入{=SUM(($B$3:$M$3)*(MOD(COLUMN(B3:M3),2)=0))},然后复制既可以完成计划合计的计算,这个看起来比较复杂些,我就简单说一下,计划所在列号都是偶数,所以MOD(COLUMN(B3:M3),2)=0,偶数结果就是true,数字表示就是1,如果是奇数,那结果就是0,所以只把偶数的进行了求和,在实际合计的计算我们就使用MOD(COLUMN(B3:M3),2)=1来计算。
五、和INDIRECT函数、ADDRESS函数的结合使用
INDIRECT函数、ADDRESS函数也是比较常用的比较高级的函数,尤其是sheet表比较多的时候,INDIRECT的快速取数的能力是相当强悍的,我以两个表进行简化展示,下面的表还是用的四提到的计划和实际的表,只不过我分为了2020年和2021年,我在B3输入=INDIRECT(B$2&"!"&ADDRESS(ROW('2020年'!C3),COLUMN('2020年'!C3),1)),我在C3输入=INDIRECT(C$2&"!"&ADDRESS(ROW('2020年'!C3),COLUMN('2020年'!C3),1)),然后向下向右复制就完成数据了。
大家如果喜欢我的文章,欢迎官族跟我学EXCEL图表
,