使用字符串作为参考的数据范围(动态选取器)

时间:2017-08-03 19:41:30

标签: google-apps-script google-sheets

我想一次从一张纸上提取信息,具体取决于某个单元格中的内容(最好是从下拉列表中),让我们说A1。

在下拉列表中的A1中,我想要当前工作簿+数据范围中的工作表名称(例如,这可能是A1:B10)。

在A1 = Sheet2 A1:B10中,这是一个完整的例子(作为字符串)

该公式将以A3为例

如果它是正常参考,它看起来像这样 = SUM(' Sheet2的' A1:!B10) 我正在寻找的东西会像这样工作 = SUM(A1) 但我可以想象它实际上看起来会更像这样 = SUM(" A1&#34) 或者如果它是一个更符合要求的问题 = QUERY(" A1"," SELECT A,B")粗略语法

希望这是有道理的,有人可以帮助,提前谢谢

如果不能在没有脚本的情况下完成,那就好了,只是想知道

1 个答案:

答案 0 :(得分:1)

您可以尝试以下代码....

//This will add all the sheet Names and the range in the cell A1 as dropdown 
  function addDropDown(){
      var cell= SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("A1");
      var sheet= [];
      var allsheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
        for( i = 0; i < allsheets.length; ++i){
           if(allsheets[i].getName().toString().toLowerCase().indexOf("report")!=-1){
             sheet.push(allsheets[i].getName()+"!"+allsheets[i].getDataRange().getA1Notation());
           }
        }
      var rule = SpreadsheetApp.newDataValidation().requireValueInList(sheet).build();
      cell.setDataValidation(rule);
    }

唯一的问题是您无法直接使用=sum(A1),而是可以执行此操作=sum(INDIRECT(A1))=QUERY(INDIRECT(A1),"SELECT A, B")