为 excel 中的每一行和每一列查找相交值
Find an intersecting value for each row and column in excel
我在 A 列的行中有每月数据。我在 headers 中也有从 B 列到 G 列的每月数据。在 H 列中,我为所有行填充了当前月份。我想显示值,例如,如果行中的月份是一月,当前月份是三月,则找到一月和三月相交的值,并对所有行执行此操作。我尝试在 J 列中使用以下公式,但它只在有效时给出第一个值。列 I 中的结果是需要的。为清楚起见,附上图片。
=INDEX(B1:H2,MATCH(A2,$A:A2,0),MATCH(A2,$B:H2,0))
您可以使用 SUMPRODUCT 来完成。
我制作了一个假数据集,其值与您显示的值不同,因此我可以正确测试更改当前月份是否有效。
即使列 CurrentMonth
包含不同的月份
,它仍然有效
我的公式是:
=SUMPRODUCT(--($B:$G=H2);B2:G2)
这是它的工作原理:
如果范围 B1:G1
等于该行中的当前月份,--($B:$G=H2)
将 return 1 和 0 的数组。所以如果 CurrentMonth=Mar
那么它将 return {0;0;1;0;0;0}
- 使用 SUMPRODUCT,我们将前一个数组乘以当前行中的范围
B:G
,因此对于第 2 行,它将是 B2:G2
。因此,例如,它将是 {0;0;1;0;0;0} * {1;2;3;4;5;6} = {0;0;3;0;0;0}
我们对这个数组求和,得到 3
只需将 INDEX 与一个匹配项一起使用:
=INDEX(B2:G2,,MATCH(H2,$B:$G,0))
我在 A 列的行中有每月数据。我在 headers 中也有从 B 列到 G 列的每月数据。在 H 列中,我为所有行填充了当前月份。我想显示值,例如,如果行中的月份是一月,当前月份是三月,则找到一月和三月相交的值,并对所有行执行此操作。我尝试在 J 列中使用以下公式,但它只在有效时给出第一个值。列 I 中的结果是需要的。为清楚起见,附上图片。
=INDEX(B1:H2,MATCH(A2,$A:A2,0),MATCH(A2,$B:H2,0))
您可以使用 SUMPRODUCT 来完成。
我制作了一个假数据集,其值与您显示的值不同,因此我可以正确测试更改当前月份是否有效。
即使列 CurrentMonth
包含不同的月份
我的公式是:
=SUMPRODUCT(--($B:$G=H2);B2:G2)
这是它的工作原理:
-
如果范围
--($B:$G=H2)
将 return 1 和 0 的数组。所以如果CurrentMonth=Mar
那么它将 return{0;0;1;0;0;0}
- 使用 SUMPRODUCT,我们将前一个数组乘以当前行中的范围
B:G
,因此对于第 2 行,它将是B2:G2
。因此,例如,它将是{0;0;1;0;0;0} * {1;2;3;4;5;6} = {0;0;3;0;0;0}
我们对这个数组求和,得到 3
B1:G1
等于该行中的当前月份,只需将 INDEX 与一个匹配项一起使用:
=INDEX(B2:G2,,MATCH(H2,$B:$G,0))