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

Excel 使用集合/字典或类进行乘法的Vlookup,excel,vba,class,dictionary,excel-formula,Excel,Vba,Class,Dictionary,Excel Formula,我的问题是,我有一个试算表(一个账户列表,运行了多个月,其期末余额为各种货币)和第二张表,其中显示了这些月fxrate对美元的兑换率。第一张纸可能有数十万行,而第二张纸大约有150-200行。这两张纸的快速摘录如下: 第1页: A - Month; B - Currency; C - ending balance; Col D (USD); Col E (USD per Dec-18 rate) Dec-18 EUR 12000 Dec-18

我的问题是,我有一个试算表(一个账户列表,运行了多个月,其期末余额为各种货币)和第二张表,其中显示了这些月fxrate对美元的兑换率。第一张纸可能有数十万行,而第二张纸大约有150-200行。这两张纸的快速摘录如下:

第1页:

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
我的目标是:

  • 填写第1张表格中的D栏,将C栏乘以第2张表格中C栏的fxrate值,并在匹配月份进行此操作。因此,在D1中,我想找出2018年12月欧元的fxrate是(0.9),然后将12000乘以该值。但是对于D4,我想知道19年3月欧元的fxrate(0.85)并乘以60000
  • 填写第一页的E栏,选择我希望使用fxrate from的月份(无论第一页A栏中规定的月份)。例如,我可以将某个变量“Dec-18”赋值,然后在第1页的整个项目列表中仅使用Dec-18的fxrates。所以这次在E2中,我将把12000乘以0.9(同上),然而对于E4,我将把6000乘以0.9(不是0.85)

我看了一些关于普通vlookup、字典和课程的帖子,但我无法回答这个问题。有谁能帮助我,至少能指导我找到一个我可以尝试增强的部分解决方案吗?

你可以做一个技巧,使用
SUMIFS
。因为我们可以假设,表单2中的每个
-
货币
组合都是唯一的,它将返回实际的
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
我使用了cell
$I$2
(见下面示例中的红色):

表1

表2

Hi PEH,理论上,我一直在寻找自动解决方案,因为我想添加几个步骤,以便在事后分析数据,但这个公式仍然比我们之前使用SUMPRODUCT时的公式更短、更好、更快。谢谢你的帮助out@Wojtek您也可以使用VBA编写公式:
Range(“D2:D7”)。公式=“=SUMIFS(Sheet2!C:C,Sheet2!A:A,Sheet1!A:A,Sheet2!B:B,Sheet1!B:B)*C:C”
因此,仍然可以使用公式自动执行此操作。公式的最大优点是,当您更改一个值(例如
fxrate
)时,它们会立即重新计算如果这回答了你的问题,请投票/将其标记为已解决:谢谢,佩赫,我刚刚回答了。