【问题标题】:Dynamic Sheet Name in Query in Google SpreashsheetGoogle 电子表格查询中的动态工作表名称
【发布时间】:2013-02-13 10:00:08
【问题描述】:

在 Google 电子表格中,我想查询另一个工作表中的数据,但问题是工作表的名称存在于单元格中。那么 QUERY 函数中有没有办法动态提及工作表名称。基本上我正在尝试做这样的事情,但使用动态工作表名称:

=QUERY('2012'!A2:F;"select C, sum(F) where A='December' group by C order by sum(F) desc")

我尝试这样做,但出现解析错误:

=QUERY(INDIRECT("Overview!L5")!A2:F;"select C, sum(F) where A='December' group by C order by sum(F) desc")

其中 Overview!L5 是带有要查询的工作表名称的单元格。我还尝试在 INDIRECT 周围连接引号,但这也不起作用。

我认为我想从查询中执行的操作非常明显,即获取按其他单元格中的值分组的单元格中的值的总和。

【问题讨论】:

    标签: google-api google-sheets google-spreadsheet-api


    【解决方案1】:

    INDIRECT 似乎是问题所在。 试试这样:

    =query(INDIRECT(A1&"!A5:A10"),"select Col1")
    

    即如果单元格 A1 包含“食物”,则上述内容与:

    =query(food!A5:A10,"select A")
    

    和一样:

    =query(INDIRECT("food!A5:A10"),"select *")
    

    **注意:间接使用“Col1”等而不是“A”,因为它不传递 col 字母。

    另外...谷歌群组论坛可能是寻找电子表格公式答案的好地方。 productforums.google.com/forum/#!categories/docs/spreadsheets

    【讨论】:

    • 感谢您的回复!您的代码存在一个问题,在我的情况下,工作表的名称存在于单元格(L5)中,但您假设它是 Food。基本上我使用 INDIRECT("Overview!L5") 获取工作表的名称。
    • 试试这个:=QUERY(INDIRECT(Overview!L5&"!A2:F");"select C, sum(F) where A='December' group by C order by sum(F) desc") INDIRECT 接受一个字符串并返回一个范围。
    • 现在我收到此错误:错误:无效查询:表中不存在列 [F]。 =INDIRECT(L5&"!A2:G") 仅在 A2 中返回值。
    • "select Col3, sum(Col6) where Col1='December' group by Col3 order by sum(Col6) desc" --- 看起来它没有传递列字母,所以使用“Col1”而不是“A”等。
    【解决方案2】:

    在查询中使用动态结构的最简单方法是不在查询中包含函数,而是在单独的单元格中准备字符串,例如 A1 用于地址 B1 用于参数,然后只是 QUERY(A1;B1)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多