我試圖將值從 sheet2 的 W 列復制粘貼到 sheet1 的 AK 列,以防 sheet1 和 sheet2 的 colA 和 colC 的值分別匹配
資料樣本:
表 1
ColA
A255
A355
A717
B487
A898
表 2
ColC ColW
A898 UK
C787
B487
A355 North America
O888
L151
A255 DACH
A717 UK
結果(表 1):
ColA ColAK
A255 DACH
A355 North America
A717 UK
B487
A898 UK
你能建議最好的方法來做到這一點嗎?到目前為止,我沒有設法想出接近預期結果的 smth
uj5u.com熱心網友回復:
正如 Cooper 在評論中提到的,您的解釋與您的示例資料不符。但是看到你的資料,這比上面的解釋更有意義。所以我將利用給定的資料。
請參閱下面的腳本:
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh1 = ss.getSheetByName('Sheet1');
var sh1lastRow = sh1.getLastRow();
// Sheet1!A:A values
var sh1AValues = sh1.getRange(1, 1, sh1lastRow, 1).getValues().flat();
// Sheet1!AK:AK range
var sh1AKRange = sh1.getRange(1, 37, sh1lastRow, 1);
var sh2 = ss.getSheetByName('Sheet2');
var sh2lastRow = sh2.getLastRow();
// Sheet2!C:C values
var sh2CValues = sh2.getRange(1, 3, sh2lastRow, 1).getValues().flat();
// Sheet2!W:W values
var sh2WValues = sh2.getRange(1, 23, sh2lastRow, 1).getValues().flat();
// for every values of Sheet1!A:A
var output = sh1AValues.map(row => {
// get position of every value in Sheet1!A:A from Sheet2!C:C
// index is -1 if value is not found
var index = sh2CValues.indexOf(row);
// if position is not -1 (means it is found)
if(index >= 0)
// return the corresponding value in Sheet2!W:W
return [sh2WValues[index]];
// return blank if value in Sheet1!A:A is not found in Sheet2!C:C
return [];
});
// set Sheet1!AK:AK range with value of generated array
sh1AKRange.setValues(output);
}
樣本資料:

輸出(腳本):

如果這是一個選項,這也可以通過使用VLOOKUP更簡單的公式來實作。
公式:
=Arrayformula(if(isblank(A:A), "", VLOOKUP(A:A, {Sheet2!C:C, Sheet2!W:W}, 2, false)))
輸出(公式):

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/353605.html
