问题描述
我在A列的行中有月度数据。在B列到G列的标题中也有月度数据。在H列中,我为所有行填充了当月。我想显示一个值,例如,如果行中的月份是Jan,当前月份是Mar,则找到Jan和Mar相交的值,并对所有行执行此操作。我尝试在J列中使用以下公式,但仅在工作时才给出第一个值。 I列中的结果是理想的。为了清楚起见,附件为图片。
mean std
AAPL 0.755739 2.379347
TSL 0.280437 0.992349
GDXJ 0.434482 1.340593
DAL 1.389140 2.838230
解决方法
您可以使用SUMPRODUCT来实现。
我创建了一个伪造的数据集,该数据集具有与显示的值不同的不同的值,因此我可以正确地测试是否可以更改“当前月份”。
即使列CurrentMonth
拥有不同的月份,它仍然有效
我的公式是:
=SUMPRODUCT(--($B$1:$G$1=H2);B2:G2)
它是这样工作的:
-
如果范围
-
B1:G1
将返回1和0的数组。因此,如果情况为CurrentMonth=Mar
,则它将返回{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
--($B$1:$G$1=H2)
等于该行中的当前月份,则只需将INDEX与一个匹配项配合使用即可:
=INDEX(B2:G2,MATCH(H2,$B$1:$G$1,0))