带有 GoogleFinance 动态日期的 ArrayFormula
ArrayFormula with GoogleFinance dynamic date
首先,我不是一个强大的 sheets 用户 :)
我正在尝试使用 GOOGLEFINANCE 来计算多种货币的金额。
我使用这个公式:
=IF($A2;
IF(
$C2:C;
$C2:C;
IF(
$D2:D;
$D2:D*INDEX(GoogleFinance("CURRENCY:USDUAH";"close";$A2);2;2);
$E2:E*INDEX(GoogleFinance("CURRENCY:EURUAH";"close";$A2);2;2)
));
0)
A 列包含日期,
C、D、E - 以 3 种不同货币表示的金额。
IF 只是确定列的优先级:)
该公式运行良好,但我每次添加行时都需要 "extend" 它 - 以递增
$A2 -> $A3 获取指定日期的汇率。
我尝试使用 ArrayFormula,但事实证明它一直引用 $A2,所以我得到与 A 单元格中指定的日期无关的相同比率。
我创建了示例 sheet 来说明:
https://docs.google.com/spreadsheets/d/1K2TbGIWl7JacYKiWgwwmJfelxJ-7fa9F9obp5XswW18/edit?usp=sharing
我允许任何人编辑,所以如果您决定编辑 - 请不要删除任何内容 :) 您也可以将您的用户名放在粘滞行中(在您建议的解决方案上方)
- 有没有办法将 ArrayFormula 应用于此以使其工作?
- 也许您可以为嵌套 IF 提供更具可读性的解决方案。
试试这个:
=arrayformula(
IF(query(arrayformula(if(A2:A="",False,True)),
"Select * where Col1=True"),
IF( $C2:C,
$C2:C,
IF( $D2:D,
$D2:D*INDEX(GoogleFinance("CURRENCY:USDUAH","close",$A2),2,2),
$E2:E*INDEX(GoogleFinance("CURRENCY:EURUAH","close",$A2),2,2))),0))
尝试:
=ARRAYFORMULA(IF(A2:A<>"";
IF(C2:C<>""; C2:C;
IF(D2:D<>""; VLOOKUP(TO_TEXT(A2:A);
TO_TEXT(QUERY(GOOGLEFINANCE("CURRENCY:USDUAH";
"close"; MIN(A:A); MAX(A:A)+1);
"offset 1 format Col1'dd.mm.yy'"; 0)); 2; 0)*1;
VLOOKUP(TO_TEXT(A2:A);
TO_TEXT(QUERY(GOOGLEFINANCE("CURRENCY:EURUAH";
"close"; MIN(A:A); MAX(A:A)+1);
"offset 1 format Col1'dd.mm.yy'"; 0)); 2; 0)*1)); ))
首先,我不是一个强大的 sheets 用户 :)
我正在尝试使用 GOOGLEFINANCE 来计算多种货币的金额。 我使用这个公式:
=IF($A2;
IF(
$C2:C;
$C2:C;
IF(
$D2:D;
$D2:D*INDEX(GoogleFinance("CURRENCY:USDUAH";"close";$A2);2;2);
$E2:E*INDEX(GoogleFinance("CURRENCY:EURUAH";"close";$A2);2;2)
));
0)
A 列包含日期, C、D、E - 以 3 种不同货币表示的金额。 IF 只是确定列的优先级:)
该公式运行良好,但我每次添加行时都需要 "extend" 它 - 以递增 $A2 -> $A3 获取指定日期的汇率。
我尝试使用 ArrayFormula,但事实证明它一直引用 $A2,所以我得到与 A 单元格中指定的日期无关的相同比率。
我创建了示例 sheet 来说明: https://docs.google.com/spreadsheets/d/1K2TbGIWl7JacYKiWgwwmJfelxJ-7fa9F9obp5XswW18/edit?usp=sharing
我允许任何人编辑,所以如果您决定编辑 - 请不要删除任何内容 :) 您也可以将您的用户名放在粘滞行中(在您建议的解决方案上方)
- 有没有办法将 ArrayFormula 应用于此以使其工作?
- 也许您可以为嵌套 IF 提供更具可读性的解决方案。
试试这个:
=arrayformula(
IF(query(arrayformula(if(A2:A="",False,True)),
"Select * where Col1=True"),
IF( $C2:C,
$C2:C,
IF( $D2:D,
$D2:D*INDEX(GoogleFinance("CURRENCY:USDUAH","close",$A2),2,2),
$E2:E*INDEX(GoogleFinance("CURRENCY:EURUAH","close",$A2),2,2))),0))
尝试:
=ARRAYFORMULA(IF(A2:A<>"";
IF(C2:C<>""; C2:C;
IF(D2:D<>""; VLOOKUP(TO_TEXT(A2:A);
TO_TEXT(QUERY(GOOGLEFINANCE("CURRENCY:USDUAH";
"close"; MIN(A:A); MAX(A:A)+1);
"offset 1 format Col1'dd.mm.yy'"; 0)); 2; 0)*1;
VLOOKUP(TO_TEXT(A2:A);
TO_TEXT(QUERY(GOOGLEFINANCE("CURRENCY:EURUAH";
"close"; MIN(A:A); MAX(A:A)+1);
"offset 1 format Col1'dd.mm.yy'"; 0)); 2; 0)*1)); ))