2017-08-03 37 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