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 |
| 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)))
我正在从 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 |
| 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。
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)))