在查询函数中使用动态符号

时间:2019-05-02 16:42:19

标签: google-apps-script google-sheets spreadsheet google-sheets-formula google-sheets-query

我需要创建一个通用公式来从查询中获取值,但是我不确切知道要通知的数据范围在哪里。 我无法命名范围,因为我们有很多标签,并且根据需要将标签加倍。

我使用了MATCH函数来知道数据范围是什么,但是它不适用于QUERY命令,该命令将用于我需要的过滤器。

类似这样的东西:

=query(B78:BV129;"select B, C")//- worked

=query("B"&MATCH("Ini";B:B;0)&":"&"BV"&MATCH("End";B:B;0);"select B, C")     

电子表格无法识别BCCol1Col2或任何参数

另一种方式:

脚本:

 function getRange(rr){
  var range = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().captura.getRange(rr);
  return range;
 }
=query(getRange("B78:BV129");"select Col1, Col2")

没有相同的错误

仅使用带有循环的脚本来识别范围非常缓慢,因此变得不可行。

有人需要以这种方式使用查询命令吗? 有任何解决方法吗?

1 个答案:

答案 0 :(得分:0)

  • 使用INDIRECT

    =query(INDIRECT("B"&MATCH("Ini";B:B;0)&":"&"BV"&MATCH("End";B:B;0));"select B,Z....
    
  • 脚本应返回值:

    var range = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(rr);// captura?
    return range.getValues(); } //added getValues