当前位置: 首页 > 知识库问答 >
问题:

ARRAYFORMULA(VLOOKUP(QUERY(IMPORTRANGEs)

谭梓
2023-03-14

我从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     |

源电子表格1

目标电子表格的结果:

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

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

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

=--IFERROR(query(
  {
    IMPORTRANGE("Id_1", "Operations!$C$2:$H");
    IMPORTRANGE("Id_2", "Operations!$C$2:$H");
    IMPORTRANGE("Id_3", "Operations!$C$2:$H");
    IMPORTRANGE("Id_4", "Operations!$C$2:$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列可以包含一个月中的任何一天。

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

共有1个答案

张子墨
2023-03-14

使用:

=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)))
 类似资料:
  • 我试图使用Java和Apache POI将简单的VLookup公式放入我的“.xlsx”文件中。 该公式有外部引用,但对我不起作用。 因此,为了给您提供更多细节,我使用了poi和POI-OOXML3.13版以及Excel2007。 我以这种方式将公式放入单元格(其中单元格是单元格): 2 3 问题是,它写入Excel文件,然后在计算时抛出错误: 它从来没有给我作为,它总是返回。它应该返回字符串值。

  • 问题内容: 我有以下数据框: 列由列中的日期向前移了一些。我想生成一个列,该列由date上的column的值组成。(最好是在逻辑中的Excel VLOOKUP公式会做到这一点。我不是在寻找简单的这里,是因为在现实之间的转移和并不总是等于)。 我尝试过,但是这很可能过于简单,并产生了错误。 问题答案: 我认为您需要按列: 与以下内容相同:

  • Match All Query 最简单的查询,它匹配所有文档 查看 Match All Query QueryBuilder qb = matchAllQuery();

  • Query是一个抽象类,包含各种实用程序方法,是Lucene在搜索过程中使用的所有类型查询的父级。 Class 声明 (Class Declaration) 以下是org.apache.lucene.search.Query类的声明 - public abstract class Query extends Object implements Serializable, Clon

  • Every GraphQL schema has a root type for both queries and mutations. The query type defines GraphQL operations that retrieve data from the server. Fieldsaction (Action) 动作查询接口 Argument Type Descriptio

  • 我使用< code>COUNTIF来计算一个值在一个水平范围内出现的次数,这样做很好: 现在我想使用将该逻辑自动应用于整个列。我的问题是似乎不能很好地与一起使用,因为我的范围跨越水平和垂直。我尝试了几件事: 公式甚至不会在整个列中复制 : 使用额外的 技巧解决了上述问题,但结果是错误的 如何将应用于包含水平