SUMIFS:如何在指定范围时将列名写为公式?

SUMIFS: How to write column names as formula while specifying a range?

table 中有 B 到 Z 列。我想对包含 "Mar-15" 的列求和作为标题,前提是列 A 的值大于或等于 "Mar-15"。

所以,如果我在 Sheet1 中有以下内容 -

     A       B       C       D       E
1          Mar-15   Apr-15  May-15  Jun-15
2 Feb-15    1       2       3       4
3 Mar-15    100     200     300     400
4 Apr-15    1000    2000    3000    4000
5 May-15    10000   20000   30000   40000

我在 Y 和 Z 列中有以下内容 -

    Y       Z
1 Month    Value
2 Mar-15    ?

我希望能够在 Z2 中编写一个公式,对标题等于 Y2 且 A 列大于或等于 Y2 的列中的值求和。所以在这里,公式所需的答案是 1110 因为 Y2 包含 Mar-15.

更清楚一点,如果Y2包含Apr-15,那么Z2中的结果应该是22000

现在,我有了公式

=MATCH(Y2,:,0)

这给了我 2,它是第一行中的列索引,与 Y2 中的值匹配。

然后,我修改它得到标题的地址-

=ADDRESS(1,MATCH(Y2,:,0))

这给了我 $B$1。为了单独获得专栏,我正在做 =LEFT(ADDRESS(1,MATCH(Y2,:,0)),2) 这给了我 $B

现在,我想对这个地址函数返回的列做一个SUMIFS,并指定条件A列应该大于Y2中的值。

=SUMIFS(<something>,A:A,">="&Y2)

东西应该是什么?根据 Y2 中的值,我想要求和的列可能不同。那么我应该插入什么公式来代替 something?

我试过 LEFT(ADDRESS(1,MATCH(Y2,:,0)),2):LEFT(ADDRESS(1,MATCH(Y2,:,0)),2) 因为 LEFT(ADDRESS(1,MATCH(Y2,:,0)),2) 给我 $B 并且我假设这个公式会给我 $B:$B ,但这不起作用。

试试这个公式

=SUMPRODUCT(--(A2:A200>=Y2),INDEX(B2:E200,0,MATCH(Y2,B1:E1,0)))

它正在使用 MATCH 来查找要查看范围为 B2:E200 的列(0,表示该选定列中的所有行)。测试 A2:A200>=Y2 检查您指定的第一列,将匹配到 1 的 -- 更改匹配到 0,然后 SUMPRODUCT 将这些 1/09 乘以所选列值以获得结果。

如果您想进一步阅读,请参阅 here

行或列可以 'spliced' 出具有 INDEX function 的矩形矩阵。 , 0, 或空参数(例如 , ,)用于标记相反参数中的所有单元格。在这种情况下,0 表示所选列中的所有行。

Z2中的公式可以是其中之一,

=SUMIF(A:A, ">="&Y2, INDEX(B:E, 0, MATCH(Y2, B:E, 0)))
=SUMIFS(INDEX(B:E, 0, MATCH(Y2, B:E, 0)),A:A, ">="&Y2)

如果您在 Y3 等中有其他值,请根据需要填写。