[Google 試算表] 搜尋試算表,合併搜尋資料

2021-07-06

最近有要用到所以研究一下,主要怎麼搜尋某個  Key  把資料做整合,統一彙整在現在的試算表上面,先簡單說一下,案例..

有一張 Sheet A


有一張 SheetB


這裡面都有 Key ,我要搜尋 Key 是 D001 的資料,並且在 我需要的 Sheet 透過輸入搜尋資料(Key = K001 ) 並且會把 SheetA , SheetB 的資料顯示出來在我現在的 Sheet  (SheetQuery)上面。




Step1.  開啟 Google Sheet 選擇工具=> 指令碼編輯器


如果有出現該畫面

要記得允許授權


Step2 . 輸入程式碼

// 取得該 sheet 的所有資料 function GetAllDataBySheetName(sheetName) { var sheet = SpreadsheetApp.getActiveSpreadsheet() .getSheetByName(sheetName); return sheet.getDataRange().getValues(); } //sheetNames: 用逗點隔開 //searchKey :搜尋的 Key &#65292;用該 Sheet 第一個 Row 判斷 //searchData : 搜尋的資料 function Query1(sheetNames, searchKey, searchData) { if (sheetNames.length > 0) { var resultData = new Array(); //取得所有要被搜尋的 Sheets var sourceSheets = sheetNames.split(','); //跑所有的 Sheet 並且拿資料比對 for (var i = 0; i < sourceSheets.length; i++) { var columnIndex = -1; var data = GetAllDataBySheetName(sourceSheets[i]); if (data != null) { //先判斷要搜尋的 searchKey 是不是跟傳入的相同 for (var j = 0; j < data[0].length; j++) { if (data[0][j] == searchKey) { columnIndex = j; //這一行註解掉&#65292;就不會出現每一個 Sheet 的資料欄位標題 resultData.push(data[0]); break; } } if (columnIndex >= 0) { for (var k = 1; k < data.length; k++) { //比對資料一致就放入顯示 if (data[k][columnIndex] == searchData) { resultData.push(data[k]); } } } } } return resultData; } }


Step3. 使用方式 ,因為我要搜尋 SheetA,SheetB 並且 Key 是 K001 的資料,這時候我只要輸入該公式

=Query1("SheetA,SheetB","Key","K001")


結果:



這邊有我測試的屍體,可以參考一下,當然你可以自己改成你想要的模樣..

https://docs.google.com/spreadsheets/d/19ZLi6wO3Zd5p8MvZTceo3ByMeAQNF5cD2P7u1MgPhQo/edit?usp=sharing


當麻許的碎念筆記 2014 | Donma Hsu Design.