Vlookup с умножением с использованием коллекции / словаря или классов - PullRequest
0 голосов
/ 04 июля 2019

Моя проблема заключается в следующем: у меня есть пробный баланс (список счетов, запущенных за несколько месяцев с конечным балансом в разных валютах) и второй лист, показывающий курсы обмена 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  

2-й лист:

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 D с 1-го листа, умножив Col C на значение fxrate из Col C со 2-го листа И сделайте это для соответствующего месяца. Поэтому в D1 я хотел бы найти, что fxrate для EUR для 18 декабря (0,9) и умножить 12000 на это значение. Однако для D4 я хотел бы знать fxrate для EUR для 19 марта (0,85) и умножить 60000 на это значение
  • заполните COl E с 1-го листа, выбрав авансом, с какого месяца я хотел бы использовать fxrate (независимо от того, какой месяц указан в столбце A на 1-м листе). Так, например, я мог бы использовать некоторую переменную «Dec-18», а затем использовать только fxrate с 18 декабря для всего списка элементов на 1-м листе. Так что на этот раз в E2 я бы умножил 12000 на 0,9 (то же самое, что и выше), однако для E4 я бы умножил 6000, но снова на 0,9 (не 0,85).

Я просматривал посты в обычном vlookup, в словарях и на уроках, но не мог ответить на этот вопрос. Может ли кто-нибудь помочь и хотя бы привести меня к частичному решению, которое я мог бы попытаться улучшить?

1 Ответ

1 голос
/ 04 июля 2019

Вы можете сделать трюк и использовать SUMIFS. Поскольку мы можем предположить, что каждая комбинация Month - Currency в Sheet2 уникальна, она будет возвращать фактическую 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
enter image description here

Лист2
enter image description here

...