带有GoogleFinance动态日期的ArrayFormula

时间:2019-12-10 18:13:07

标签: google-sheets google-sheets-formula array-formulas gs-vlookup google-finance

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

我正在尝试使用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只是优先考虑列:)

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

我尝试使用ArrayFormula,但事实证明,它始终引用$ A2,因此从A单元格中指定的日期开始,我得到的利率相同。

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

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

  1. 是否可以将ArrayFormula应用于此以使其正常工作?
  2. 也许您可以为嵌套IF提供更具可读性的解决方案。

2 个答案:

答案 0 :(得分:1)

尝试:

=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 :(得分:0)

尝试这个:

=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))