ARRAYFORMULA(VLOOKUP(QUERY(IMPORTRANGEs))) 而不是 ARRAYFORMULA(QUERY(IMPORTRANGEs)) 不起作用

ARRAYFORMULA(VLOOKUP(QUERY(IMPORTRANGEs))) instead of ARRAYFORMULA(QUERY(IMPORTRANGEs)) doesn't work

我正在从 4 个来源导入数据,它们的格式是:

|       C       | D |     E     | F | G |        H       |
| 31.03.2022    | * | -60 000   | * | * |   Prepayment   |
| 15.01.2022    | * |  17 087   | * | * |    Transfer    |
| 18.06.2022    | * |    -669   | * | * |     Return     |
| 15.06.2022    | * |  170 870  | * | * |     Income     |

Source spreadsheet 1

destination spreadsheet结果:

|      A    |    B    |
| Jun 2022  |  170870 |
| May 2022  |       0 |
| Apr 2022  |       0 |
| Mar 2022  |       0 |

实际上,A 列的单元格包含 01.06.2022、01.05.2022 等

B2 中的公式从以下来源中选择 6 月份的交易记录:

=--IFERROR(query(
  {
    IMPORTRANGE("Id_1", "Operations!$C:$H");
    IMPORTRANGE("Id_2", "Operations!$C:$H");
    IMPORTRANGE("Id_3", "Operations!$C:$H");
    IMPORTRANGE("Id_4", "Operations!$C:$H")
  },
    "SELECT sum(Col3) 
      WHERE 
        (Col1 <= date'"&TEXT(EOMONTH($A2,0),"yyyy-mm-dd")&"' 
        AND Col1 >= date'"&TEXT($A2,"yyyy-mm-dd")&"'
        AND Col3 >0 AND Col6 <> 'Transfer' AND Col6 <> 'Loan')
      LABEL sum(Col3) ''",0))

类似的公式在 B 列的其他单元格中。

我想自动将公式展开到 B 列,这样我就不必在每个单元格中都写下公式。

无法直接使用 ARRAYFORMULA。 我读到:“这是因为 QUERY 的输出本身可以是一个数组,所以不可能跨另一个数组迭代一个数组输出”。但是,我的公式不输出数字数组,而是输出单个数字,因为我在其中使用了 sum(Col3) 。所以这不是原因。

VLOOKUP 也不起作用,因为目标电子表格的 A 列包含固定日期(月初),而源电子表格的 C 列可以包含一个月中的任何几天。

如何在不创建额外的工作表或列的情况下解决问题?

使用:

=ARRAYFORMULA(IFNA(VLOOKUP(MONTH(A2:A); QUERY({IMPORTRANGE("15BFO8u_FbibFj06FI4AsRofvxUuEc4v9gW1s4UM1pcw"; "Operations!C2:H")};
 "select month(Col1)+1,sum(Col3) where Col3 is not null and not Col6 matches 'Transfer|Loan' group by month(Col1)+1"); 2; 0)))