Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google sheets 如何计算Google查询';s数据字段?_Google Sheets_Google Sheets Formula - Fatal编程技术网

Google sheets 如何计算Google查询';s数据字段?

Google sheets 如何计算Google查询';s数据字段?,google-sheets,google-sheets-formula,Google Sheets,Google Sheets Formula,如何计算查询的数据属性以使数据范围动态 更多详细信息:我有一个包含多个工作表的电子表格,包括一个单独的“摘要”表。这里,有几个查询正在聚合来自这些多个工作表的数据。都很好。但是:无论何时添加/删除工作表,我都必须手动更新所有查询,这相当麻烦。所以我创建了一个小脚本,返回所有工作表的名称。很好 我遇到的问题是:如何使QUERY()接受这些工作表名称?它返回#值 最初:=QUERY({'sheet 1'!$A:$C;'sheet 2'!$A:$C};“SELECT SUM(Col2),…”/)有效

如何计算查询的数据属性以使数据范围动态

更多详细信息:我有一个包含多个工作表的电子表格,包括一个单独的“摘要”表。这里,有几个查询正在聚合来自这些多个工作表的数据。都很好。但是:无论何时添加/删除工作表,我都必须手动更新所有查询,这相当麻烦。所以我创建了一个小脚本,返回所有工作表的名称。很好

我遇到的问题是:如何使QUERY()接受这些工作表名称?它返回
#值

  • 最初:
    =QUERY({'sheet 1'!$A:$C;'sheet 2'!$A:$C};“SELECT SUM(Col2),…”/)有效。
  • 使用脚本:
    =QUERY(getSheetNames();“SELECT SUM(Col2),…”/#value error
  • 将脚本添加到单元格和引用单元格:
    =QUERY(A1;“选择总和(Col2),…”)/#值错误
  • 自定义函数:
    getSheetNames()
    当前返回
    “{'sheet 1'!$A:$C;'sheet 2'!$A:$C}”
函数getSheetNames(){ var out=“”; var columns=“!$A:$C”; var撇号=“”; var sheets=SpreadsheetApp.getActiveSpreadsheet().getSheets(); 对于(变量i=1;i
非常感谢你的帮助

能否提供与
getSheetNames()
相关的代码?最可能的问题是
getSheetNames()
返回一个字符串,
QUERY
需要一个单元格范围。考虑到您的情况,我建议将所有这些(包括查询)都设置为自定义函数,而不要在常规公式中调用自定义函数的结果。你为什么不能那样做?如果你认为这是一个有效的解决方案,但你不确定如何做到这一点,考虑提供完整的代码>查询< /代码>公式,我会考虑发布一个答案来解释这一点。不返回字符串是一个非常好的主意,可能会成功!应该返回哪种类型的文件?我将在上面发布
getSheetNames()
。出于可维护性的考虑,我不希望将所有内容都封装在自定义函数中,因为有几个人正在处理此工作表。更容易将公式生成为文本字符串,然后使用脚本将该字符串转换为实际公式
出于可维护性的考虑,我不希望将所有内容封装在自定义函数中
您可以拥有所有可能作为自定义函数参数更改的信息。要按照你想要的方式来做,你可能需要,但如果你不知道你的公式会返回多少张,我认为这是不可能的。实际上,我认为将所有内容都包含在自定义公式中会使维护更容易。@player0我认为您不能使用自定义函数设置公式(无法使用
setValue
setFormula
等方法)。您能提供与
getSheetNames()
相关的代码吗?最可能的问题是
getSheetNames()
返回一个字符串,
QUERY
需要一个单元格范围。考虑到您的情况,我建议将所有这些(包括查询)都设置为自定义函数,而不要在常规公式中调用自定义函数的结果。你为什么不能那样做?如果你认为这是一个有效的解决方案,但你不确定如何做到这一点,考虑提供完整的代码>查询< /代码>公式,我会考虑发布一个答案来解释这一点。不返回字符串是一个非常好的主意,可能会成功!应该返回哪种类型的文件?我将在上面发布
getSheetNames()
。出于可维护性的考虑,我不希望将所有内容都封装在自定义函数中,因为有几个人正在处理此工作表。更容易将公式生成为文本字符串,然后使用脚本将该字符串转换为实际公式
出于可维护性的考虑,我不希望将所有内容封装在自定义函数中
您可以拥有所有可能作为自定义函数参数更改的信息。要按照你想要的方式来做,你可能需要,但如果你不知道你的公式会返回多少张,我认为这是不可能的。实际上,我认为将所有内容都放在自定义公式中会使维护更容易。@player0我认为您不能使用自定义函数设置公式(不能使用
setValue
setFormula
等方法)。
function getSheetNames() {
  var out = "";
  var columns = "!$A:$C";
  var apostrophe = "'";
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
    
    for (var i = 1 ; i < sheets.length; i++) {
      out += apostrophe + sheets[i].getName() + apostrophe + columns + "; ";
    }
  
  out = "{" + out.slice(0, -2) + "}";
  return out;
}