最近有要用到所以研究一下,主要怎麼搜尋某個 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 ,用該 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;
//這一行註解掉,就不會出現每一個 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