問題:
我正在嘗試執行以下操作:
將 Sheet2 中單元格的相同背景顏色設定為 Sheet1 中與 Sheet2 中具有相同值的單元格。
這個想法是比較 Sheet2 中也存在于 Sheet1 中的所有值,并從 Sheet2 中的單元格中獲取預制背景,并將 Sheet2 中的這些預制背景設定為 Sheet1 中具有匹配值的單元格。
目標是在匹配時根據單元格值自動設定背景,而不管順序(以避免必須為數百個不同的匹配值手動執行此操作)。
插圖示例:
在 Sheet2 中,我預設了一個范圍 A1:A10,其中包含 10 個不同的值,所有值都具有獨特的背景。

在 Sheet1 中,我有與 Sheet2 中相同的 10 個值以及其他不匹配的值。此外,Sheet1 中的 10 個匹配值“分散在”范圍 A1:AG20(與 Sheet2 不同的范圍,可以是任何范圍)。

我想要得到的結果是:

其他關閉問題:
我在這里找到了密切的問題:

我試圖在 Sheet1 中使用重復值獲得的結果是:

當前的 Sheet1 結果:



請注意:更改單元格時,請將代碼更改A1為當前單元格。
uj5u.com熱心網友回復:
function copycolors() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet0');
const cA = sh.getRange(1,1,sh.getLastRow()).getDisplayValues().flat();//values
const bA = sh.getRange(1,1,sh.getLastRow()).getBackgrounds().flat();//colors
let colors = {pA:[]};
cA.forEach((c,i) => {
colors[c]=bA[i];
colors.pA.push(c);
});
const osh = ss.getSheetByName('Sheet1');
const vs = osh.getDataRange().getDisplayValues();
const bs = osh.getDataRange().getBackgrounds();
let bgA = vs.map((r,i) =>{
r.forEach((c,j) =>{
let idx = colors.pA.indexOf(c);
if(~idx) {
bs[i][j] = colors[c];
}
});
return bs[i];
});
osh.getRange(1,1,bgA.length,bgA[0].length).setBackgrounds(bgA);
}
~ 按位不
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/395965.html
