我試圖解決的問題如下。我正在嘗試創建一個回圈,找到字母“Y”并且只找到 Y。我想這樣做,如果一個單元格中有 Y,它將使它左側的 4 行被稱為 %NULL% . 問題是每行有 2 個單元格,其中 Y 可能是。
這是我開始的代碼,但不知道從哪里開始。
function Loop1(){
var sheet = SpreadsheetApp.getActive().getSheetByName("EXP50");
var data = sheet.getDataRange().getValues();
for(var i = 1; i< data.length; i ){
if(data[i][7-1] === "Y"){
sheet.getRange(i 1, 3).setValue("%NULL%");
sheet.getRange(i 1, 4).setValue("%NULL%");
sheet.getRange(i 1, 5).setValue("%NULL%");
sheet.getRange(i 1, 6).setValue("%NULL%");
}
if(data[i][13-1] === "Y") {
sheet.getRange(i 1, 9).setValue("%NULL%");
sheet.getRange(i 1, 10).setValue("%NULL%");
sheet.getRange(i 1, 11).setValue("%NULL%");
sheet.getRange(i 1, 12).setValue("%NULL%");
}
}
}
uj5u.com熱心網友回復:
而不是if回圈,你不能使用這樣的東西:
function Loop1(){
var sheet = SpreadsheetApp.getActive().getSheetByName("EXP50");
var data = sheet.getDataRange().getValues();
while 1 = 1:
if(data[i][7-1] === "Y"){
sheet.getRange(i 1, 3).setValue("%NULL%");
sheet.getRange(i 1, 4).setValue("%NULL%");
sheet.getRange(i 1, 5).setValue("%NULL%");
sheet.getRange(i 1, 6).setValue("%NULL%");
}
if(data[i][13-1] === "Y") {
sheet.getRange(i 1, 9).setValue("%NULL%");
sheet.getRange(i 1, 10).setValue("%NULL%");
sheet.getRange(i 1, 11).setValue("%NULL%");
sheet.getRange(i 1, 12).setValue("%NULL%");
}
}
}
(抱歉,我不知道這是否能解決您的問題。)
uj5u.com熱心網友回復:
我相信你的目標如下。
- 您想檢查列“G”和“M”。
- 當列的單元格值為“Y”時,您要將
%NULL%“C”-“F”列和“I”-“L”列放在同一行中。 - 您想使用 Google Apps 腳本來實作這一點。
改裝要點:
- 我以為
setValue在回圈中使用,程序成本會變高。
在這個答案中,通過降低流程成本,我想提出以下 2 種模式。
模式一:
在這個模式中,使用了getValues和的方法setValues。
function Loop1() {
var sheet = SpreadsheetApp.getActive().getSheetByName("EXP50");
var range = sheet.getDataRange();
var data = range.getValues();
data.forEach(r => {
var [g, m] = [r[6], r[12]];
var temp = Array(4).fill("%NULL%");
if (g == "Y") r.splice(2, 4, ...temp);
if (m == "Y") r.splice(8, 4, ...temp);
});
range.setValues(data);
}
模式2:
在此模式中,使用了 TextFinder。
function Loop1() {
var sheet = SpreadsheetApp.getActive().getSheetByName("EXP50");
var ranges = sheet.createTextFinder("Y").matchCase(true).matchEntireCell(true).findAll().reduce((ar, r) => {
var col = r.getColumn();
var row = r.getRow();
if (col == 7) ar.push(`C${row}:F${row}`);
if (col == 13) ar.push(`I${row}:L${row}`);
return ar;
}, []);
sheet.getRangeList(ranges).setValue("%NULL%");
}
參考:
- 獲取值()
- 設定值(值)
- 類表的createTextFinder(findText)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/398389.html
上一篇:只需將電子表格“封面”中的D3中的資料復制并粘貼到電子表格“忽略”中的任何列中
下一篇:增亮按鈕顏色
