首页 > 解决方案 > 使用集合/字典或类进行乘法查找

问题描述

我的问题如下,我有一个试算表(运行了多个月的帐户列表,其期末余额以各种货币表示)和第二张表显示了这些月的美元汇率转换率。第一张纸可能有数十万行,而第二张纸大约有 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

我的目标是:

我看过关于常规 vlookup、字典和课程的帖子,但我无法回答这个问题。任何人都可以帮助并至少指导我找到我可以尝试增强的部分解决方案吗?

标签: excelvbaclassdictionaryexcel-formula

解决方案


你可以做一个技巧并使用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(见下例中的红色部分):

表 1
在此处输入图像描述

表 2
在此处输入图像描述


推荐阅读