今天结合案例跟大家分享一下动态求和区域的构建,主要通过以下3个函数的方式来跟大家讲解。在讲解之前我们先来复习一下sumif函数(条件求和)

sumif函数的功能为:对满足条件的单元格求和。

其语法结构为:

第一种:用index函数构建动态求和区域

Q3单元格中的公式为:

=SUMIF($B$2:$B$10,$Q$2,INDEX($C$2:$N$10,,MATCH($Q$1,$C$1:$N$1,0)))

先用match函数精确查找Q2在C1:N1区域中的位置n,再将其结果作为index函数的第三参数,即返回C2:N10区域中的第n列,n的结果由Q2决定。

index函数的语法结构为:

第二种:用choose函数构建动态求和区域

Q4单元格中的公式为:

=SUMIF($B$2:$B$10,$Q$2,CHOOSE(MATCH($Q$1,$C$1:$N$1,0),C$2:C$10,$D$2:$D$10,$E$2:$E$10,$F$2:$F$10,$G$2:$G$10,$H$2:$H$10,$I$2:$I$10,$J$2:$J$10,$K$2:$K$10,$L$2:$L$10,$M$2:$M$10,$N$2:$N$10))

其中:

=CHOOSE(MATCH($Q$1,$C$1:$N$1,0),C$2:C$10,$D$2:$D$10,$E$2:$E$10,$F$2:$F$10,$G$2:$G$10,$H$2:$H$10,$I$2:$I$10,$J$2:$J$10,$K$2:$K$10,$L$2:$L$10,$M$2:$M$10,$N$2:$N$10)公式的含义为:

如果MATCH($Q$1,$C$1:$N$1,0)结果为1月就返回C2:C10,为2月就返回D2:D10…

choose函数的语法结构为:

第三种:用indirect函数构建动态求和区域

Q5单元格中的公式为:

=SUMIF($B$2:$B$10,$Q$2,INDIRECT("R2C"&MATCH(Q1,$A$1:$N$1,0)&":R10C"&MATCH(Q1,A$1:N$1,0),0))

这里的indirect函数采用的是R1C1的样式,那什么是R1C1样式呢?

R代表的是行号(row函数的缩写),C则为列号(column函数的缩写),即第几行第几列的数据

1月的数据区域为R2C3:R10C3,2 月的数据区域为R2C4:R10C4……

即不管是1月,2月还是12月都是从第2行开始第10行结束的,而列号则由match(Q1,A1:N1,0)决定

indirect函数的语法结构为: