【问题标题】:Query referencing 20 sheets / Indirect error with multiple ranges查询引用 20 张/具有多个范围的间接错误
【发布时间】:2021-12-28 18:32:24
【问题描述】:

我有 20 张工作表(Eagle、Kestral 等),想在不同的查询中引用它们的整个组。

为了阻止查询公式文本过大,我尝试使用 Indirect 函数,但看起来 Indirect 可能无法返回多个范围。

仅 2 张纸的示例:
Query({Indirect(A1)}) 其中 A1 包含文本 Eagle!F3:I33;Kestrel!F3:I33
给出间接错误“不是有效的单元格/范围引用”。

下面的 2 个公式可以正常工作,但在引用 20 张纸时会变得笨拙。
Query({Eagle!F3:I33;Kestrel!F3:I33})
Query{indirect(A2); indirect(A3)} 其中 A2 是 Eagle!F3:I33 而 A3 是 Kestrel!F3:I33

请提出建议(无脚本)。

Challenge2 = 如何在查询输出的 Col1 中包含工作表名称(鸟)。工作表名称(鸟)写在每张工作表的 A1 单元格中。

【问题讨论】:

  • 能否改进一下格式?
  • 怎么回事?谢谢N
  • 使用反引号(`)like this添加代码块。
  • 添加了我自己的解决方案,以帮助其他有类似挑战的人

标签: google-sheets-formula google-query-language


【解决方案1】:

这是我确定的解决方案。

问题总结
挑战 1:在引用许多工作表/选项卡时避免使用过大的查询公式。
Challenge2:返回工作表名称作为查询输出的一部分。

关键信息
脚本不是一个选项,因为它会导致我组织中的用户出现访问和性能问题。 间接函数不能将多个范围拉入一个查询。
没有返回工作表名称的函数(脚本中除外)。
我从工作表名称的静态列表开始。
每个工作表都包含名称和总计数据,但需要用工作表名称标记以在查询输出中识别它。每个工作表还在单元格 A1 中包含工作表名称(但未在解决方案中使用)。

解决方案
挑战 1 的解决方案:在隐藏的辅助列中指定唯一的工作表范围和选择语句,然后在查询中引用它们。
挑战 2 的解决方案:在每个 select 语句中插入工作表名称作为文本。

=query(
    {query({indirect(B4)},C4);query({indirect(B5)},C5);
    query({indirect(B6)},C6);query({indirect(B7)},C7);
    query({indirect(B8)},C8);query({indirect(B9)},C9);
    query({indirect(B10)},C10);query({indirect(B11)},C11);
    query({indirect(B12)},C12);query({indirect(B13)},C13);
    query({indirect(B14)},C14);query({indirect(B15)},C15);
    query({indirect(B16)},C16);query({indirect(B17)},C17);
    query({indirect(B18)},C18);query({indirect(B19)},C19);
    query({indirect(B20)},C20);query({indirect(B21)},C21);
    query({indirect(B22)},C22);query({indirect(B23)},C23)}
    ,"where Col3 >="&F2 &B2 ,0)

useful screen shot - helper columns and output

单元格 F2 和 B2 是用户定义的。 F2 是要返回的最小值。 B2 与输出排序有关。
B2 根据 E2 中用户定义的下拉菜单为 select 语句创建额外的文本。
=if(E2="order by lap count"," order by Col3 desc",)

最终环绕查询末尾的 ,0 是可选的查询标题行子句。零告诉查询输入数据没有标题。此查询所必需的。

每个工作表查询中的大括号将列名 F、G、H 转换为 Col1、Col2 Col3。
最终环绕式查询中的大括号和分号将工作表查询输出组合成一个数组,一个在另一个之下。

重要提示 – 在查询中引用多个工作表/选项卡时,最好创建一个环绕查询(如上)来过滤输出。这是因为如果您要过滤单个工作表查询并且其中一个查询没有返回数据,则环绕查询中的大括号将返回数组错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    相关资源
    最近更新 更多