Не удается правильно сопоставить формулу googlefinance с датами - PullRequest
1 голос
/ 02 августа 2020

Я пытаюсь конвертировать денежные суммы в долларах США в евро, но я хочу сделать это в соответствии с датой транзакции, имеющейся в связи с обменным курсом c dyncami. * функция с функцией index вместе с функцией date, которая будет состоять из функций right, mid и left. Все это должно быть заключено в arrayformula. Числа следует округлить до round.

Нерабочий пример:

enter image description here

Don't mind ;, this is instead of , in my google sheets language settings.

Formula: =ARRAYFORMULA(IF(B2:B="";"";ROUND(INDEX(B2:B*GOOGLEFINANCE("CURRENCY:USDEUR";"price";DATE(RIGHT(A2:A;4);MID(A2:A;4;2);LEFT(A2:A;2)));2;2);2)))

Formula (with , instead of ;): =ARRAYFORMULA(IF(B2:B="","",ROUND(INDEX(B2:B*GOOGLEFINANCE("CURRENCY:USDEUR","price",DATE(RIGHT(A2:A,4),MID(A2:A,4,2),LEFT(A2:A,2))),2,2),2)))

Since I'm pretty sure this formula should work in "normal circumstances", I've replicated it leaving out arrayformula, and full ranges (such as B2:B, etc), and it works once I drag down the formula.

Working example: введите описание изображения здесь

Формула: =IF(F2="";"";ROUND(INDEX(F2*GOOGLEFINANCE("CURRENCY:USDEUR";"price";DATE(RIGHT(E2;4);MID(E2;4;2);LEFT(E2;2)));2;2);2))

Формула , вместо ;): =IF(F2="","",ROUND(INDEX(F2*GOOGLEFINANCE("CURRENCY:USDEUR","price",DATE(RIGHT(E2,4),MID(E2,4,2),LEFT(E2,2))),2,2),2))

Кто-нибудь знает, что происходит с первым случаем, т.е. почему он не работает? Я считаю, что это должно быть что-то с этими полными диапазонами (например, B2: B, A2: B , et c), но не знаю почему ...

1 Ответ

1 голос
/ 02 августа 2020

GOOGLEFINANCE уже является формулой типа ARRAYFORMULA, поэтому попробуйте следующее:

=ARRAYFORMULA(IF(B2:B="";;ROUND(B2:B*IFNA(VLOOKUP(A2:A+0,9986111111; 
 GOOGLEFINANCE("CURRENCY:USDEUR"; "price"; MIN(A2:A); MAX(A2:A)+1); 2; 1)); 2)))

введите описание изображения здесь

...