Excel数组公式,在另一个IF中使用来自一个IF结果的信息作为条件?

上下文

我正在build立一个财务仪表板,但我遇到麻烦,得到一个符合我客户需求的公式。

我以不同的货币合并金额,但是对于一个特殊的指标,
我需要用上个月的汇率build立年初至今

就像是 :

(Amount_$_Jan + Amount_$_Feb)*ExRate_$_Feb + (Amount_£_Jan + Amount_£_Feb)*ExRate_£_Feb 

要么

 (Amount_$_Jan + Amount_$_Feb + Amount_$_Mar)*ExRate_$_Mar + (Amount_£_Jan + Amount_£_Feb + Amount_£_Mar)*ExRate_£_Mar 

我的问题

在数据中,我有多种货币,他们会更多,所以我不能列出货币。

我试图 :

  • 获得与第一个IF的标准匹配的每一行的货币价值
  • 在我的第二IF使用它来find该货币的兑换范围
    我计算的那个月
    与: Named_Rg[Currency]=Named_Rg[Currency]

显然总是如此 ,但它是我已经尝试过,我可以validation的唯一语法…

我试过了 :

  • Named_Rg[Currency]=[@[Currency]]
  • Named_Rg[Currency]=[Currency]

但是,两者都给错误(我在表Named_Rg之外使用该公式)

我知道我可以在VBA中编写一个函数,但我宁愿保留一个xlsx


我的公式

我已经删除了一些testing,如testing年份,这是不相关的问题。

我在另一张表中使用它,其中表Named_Rg是:

 {=SUM(IF(Named_Rg[Month]<=MONTH(X$5);Named_Rg[Amount]*IF(AND(Named_Rg[Month]=MONTH(X$5);Named_Rg[Currency]=Named_Rg[Currency]);Named_Rg[Chg to €];0);0))} 

我怎样才能参考在第二个IF中find的行/货币?

样本数据

这只是一个例子,我会有每月和货币多行。

 Year Month Currency Chg to € Amount 2017 1 EUR 1 20 2017 1 USD 0.6 30 2017 1 LST 2 40 2017 2 EUR 1 200 2017 2 USD 0.7 300 2017 2 LST 2.2 400 2017 3 EUR 1 2000 2017 3 USD 0.8 3000 2017 3 LST 2.4 4000 

CSV格式:

 Year;Month;Currency;Chg to €;Amount 2017;1;EUR;1;20 2017;1;USD;0.6;30 2017;1;LST;2;40 2017;2;EUR;1;200 2017;2;USD;0.7;300 2017;2;LST;2.2;400 2017;3;EUR;1;2000 2017;3;USD;0.8;3000 2017;3;LST;2.4;4000 

预期成绩 :

年初至今(1月): 118 = 20 * 1 + 30 * 0.6 + 40 * 2
YTD上次变动(Feb): 1419 =(20 + 200)* 1 +(30 + 300)* 0.7 +(40 + 400)* 2.2
YTD上次变动(Mar): 15540 =(20 + 200 + 2000)* 1 +(30 + 300 + 3000)* 0.8 +(40 + 400 + 4000)* 2.4

数组公式不喜欢AND()OR()运算符。 它们需要分别用*+代替。

所以你的:

 AND(Named_Rg[Month]=MONTH(X$5);Named_Rg[Currency]=Named_Rg[Currency]) 

应该:

 (Named_Rg[Month]=MONTH(X$5))*(Named_Rg[Currency]=Named_Rg[@Currency]) 

所以公式会是:

 =SUM(IF(Named_Rg[Month]<=MONTH(X$5);Named_Rg[Amount]*IF((Named_Rg[Month]=MONTH(X$5))*(Named_Rg[Currency]=Named_Rg[@Currency]);Named_Rg[Chg to €]))) 

请记住,这是一个数组公式,需要使用Ctrl-Shift-Enter进行确认

在这里输入图像说明


但我想你想要这个公式,而不是得到所需的输出:

 =SUMPRODUCT(SUMIFS(Named_Rg[Amount],Named_Rg[Month],"<=" & MONTH(X5),Named_Rg[Currency],Named_Rg[Currency])*(Named_Rg[Month]=MONTH(X5))*(Named_Rg[Chg to €])) 

改变,到你的; 为您的本地设置。

![在这里输入图片描述