关于Google表格:具有GoogleFinance动态日期的ArrayFormula

ArrayFormula with GoogleFinance dynamic date

首先,我不是功能强大的工作表用户:)

我正在尝试使用GOOGLEFINANCE计算多种货币的金额。
我使用以下公式:

1
2
3
4
5
6
7
8
9
10
=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只是优先考虑列:)

该公式效果很好,但是每次添加行时我都需要"扩展"它-递增
$ A2-> $ A3获取指定日期的汇率。

我尝试使用ArrayFormula,但事实证明它始终引用$ A2,因此我得到的速率与A单元中指定的日期无关。

我已经创建了样本表来说明:
https://docs.google.com/spreadsheets/d/1K2TbGIWl7JacYKiWgwwmJfelxJ-7fa9F9obp5XswW18/edit?usp=sharing

我允许任何人进行编辑,因此,如果您决定编辑-请不要删除任何内容:)也可以将用户名放在粘性行中(在建议的解决方案之上)

  • 有没有一种方法可以将ArrayFormula应用于此呢?
  • 也许您可以为嵌套IF提供更具可读性的解决方案。

  • 尝试:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    =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)); ))

    0


    尝试一下:

    1
    2
    3
    4
    5
    6
    7
    8
    =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))