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 等中有其他值,请根据需要填写。
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 等中有其他值,请根据需要填写。