2017-08-03 36 views
1

我想根据某个单元格中存在的内容(最好是从下拉列表中选择)来一次从一张表中获取信息。使用字符串作为参考的数据范围(动态选取器)

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

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

的公式将在A3例如

如果这是一个正常参考它看起来像这样 = SUM('Sheet2'!A1:B10) 我在找的是这样的 = SUM(A1) 但我可以想象它实际上看起来更像这样 = SUM(“A1”) 或者如果它是查询更多沿着 = QUERY(“A1”,“SELECT A,B”)粗线语法

希望这是有道理的,有人可以提供帮助,在此先感谢

诗,如果它不能没有脚本的罚款只是想知道

回答

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")

+0

感谢的作品大。 –

+0

为了让升技更加个性化IL喜欢限制在下拉被子蹬到那些有那么一句话报告。因此,而不是抓“工作表Sheet1”,而“sheet1”,“report123”,从张那只抢报告页面列表“456报告”,我会怎么做呢?谢谢 –

+1

你可以使用indexOf来实现这个...我修改了代码 – Ritz