使用集合/字典或类进行乘法的Vlookup

时间:2019-07-04 07:40:15

标签: excel vba class dictionary excel-formula

以下是我的问题,我有一个试算表余额(已运行多个月的帐户列表,这些帐户的期末余额以各种货币计)和第二张工作表,显示了该月份该汇率对美元的汇率换算。第一张纸可能有成千上万的行,而第二张纸可能有150-200行。这两张纸的快速摘录如下:

第一张纸

A - Month; B - Currency; C - ending balance; Col D (USD); Col E (USD per Dec-18 rate)  
Dec-18         EUR               12000  
Dec-18         GBP               55000  
Dec-18         SEK               1500000  
Mar-19         EUR               60000  
Mar-19         GBP               1700  
Mar-19         SEK               500  

第二张纸:

A - Month; B - Currency;    C - fxrate
Dec-18         EUR               0.9
Dec-18         GBP               0.7
Dec-18         SEK               9.3
Mar-19         EUR               0.85
Mar-19         GBP               0.75
Mar-19         SEK               9.1

我的目标是:

  • 通过将Col C与第二张工作表中Col C的fxrate值相乘,来填充第一张工作表中的Col D,并在匹配的月份中执行。因此,在D1中,我想查找12月18日欧元的汇率是(0.9),然后将12000乘以该值。但是,对于D4,我想知道19年3月(0.85)的欧元汇率,并将该值乘以60000
  • 通过选择我想从哪个月开始使用fxrate,从第一张表中填写COl E(无论第一张表A中的哪个月都注明)。因此,例如,我可以使用某个变量“ Dec-18”,然后仅将Dec-18的fxrates用于第一张纸上的整个项目列表。因此,这次我在E2中将12000乘以0.9(与上述相同),但是对于E4,我将6000乘以0.9(而不是0.85)。

我看过有关常规vlookup,字典和类的帖子,但我无法回答该问题。任何人都可以帮忙,至少可以引导我找到我可以尝试增强的部分解决方案吗?

1 个答案:

答案 0 :(得分:1)

您可以技巧一下,并使用SUMIFS。既然我们可以假设Sheet2中的每个Month-Currency组合都是唯一的,那么它将返回实际的fxrate,因为只有一个唯一条目的总和就是值本身:

此公式将返回fxrate

=SUMIFS(Sheet2!C:C,Sheet2!A:A,Sheet1!A:A,Sheet2!B:B,Sheet1!B:B)

您只需要将其与C列相乘

=SUMIFS(Sheet2!C:C,Sheet2!A:A,Sheet1!A:A,Sheet2!B:B,Sheet1!B:B)*C:C

获得结果(对于D列使用此公式)。

对于E列,它几乎是相同的公式,您只需要在某个位置写入固定的月份值,然后使用SUMIFS中的该单元格作为标准而不是A列即可。

=SUMIFS(Sheet2!C:C,Sheet2!A:A,$I$2,Sheet2!B:B,Sheet1!B:B)*C:C

我使用了$I$2单元格(请参见下面的示例中的红色):

Sheet1
enter image description here

Sheet2
enter image description here