以下代碼確實按預期作業,它比較了 B4 和 C4 中的 a。
如果 B4 的數字小于 C4,它將用新的較低數字替換 C4。
回圈正在遍歷所有其他行,這很好用。
function recordMinSellPrice() {
var sheet = SpreadsheetApp.getActiveSheet();
var numberRange = 4;
for(var i= 0; i < 5;i )
{
var test = "B" numberRange ":" "C" numberRange;
var range = sheet.getRange(test);
var values = range.getValues()[0];
range.setValues([[values[0], Math.min(values[0], values[1])]]);
numberRange ;
}
}
下面的代碼不能按預期作業。我想在上面的代碼中將 B 列與 D 列而不是 C 進行比較。
但是當我運行它時,我得到一個例外:
例外:代碼中的列數與范圍內的列數不匹配。代碼有 2,但范圍有 3。
我認為它必須對這部分做些什么;var test = "B" numberRange ":" "D" numberRange;
我認為它目前也在選擇 C ?? numberRange。但我不想與 C numberRange 進行比較。
代碼應該將 B4 與 D4 進行比較。如果 B4 大于 D4。用 B4 替換 D4。開始回圈。
function recordMaxSellPrice() {
var sheet = SpreadsheetApp.getActiveSheet();
var numberRange = 4;
for(var i= 0; i < 5;i )
{
var test = "B" numberRange ":" "D" numberRange;
var range = sheet.getRange(test);
var values = range.getValues()[0];
range.setValues([[values[0], Math.max(values[0], values[1])]]);
numberRange ;
}
}
我試圖盡可能好地解釋我的問題。
感謝您提前提供幫助。
uj5u.com熱心網友回復:
以防萬一。以下是如何根據最佳實踐完成的示例:
function recordMaxSellPrice() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getDataRange();
var data = range.getValues(); // get all data from the sheet
// process the data with no redundant calls to the server
for (var row in data) {
data[row][3] = (data[row][3] > data[row][1]) ? data[row][3] : data[row][1]
}
// set updated data back on the sheet
range.setValues(data);
}
data[row][1] 是行中 B 列的單元格
data[row][3] 是行中 D 列的單元格
uj5u.com熱心網友回復:
在底部
range.setValues([[values[0], Math.max(values[0], values[1])]]);
您只傳遞 2 個值... 2 個單元格到 setValues。
但是,您正在閱讀的范圍有 3 個單元格,B、C 和 D
所以你必須在 setValues 命令中設定 3 個值。
range.setValues([[B,C,D]]);
uj5u.com熱心網友回復:
另一種選擇是簡單地使用forEach() 動態檢查每列資料或數字,如果值大于 B 列,則替換 D 列
const ss = SpreadsheetApp.getActiveSpreadsheet();
const ws = ss.getActiveSheet();
const colB = ws.getRange(1,2,ws.getLastRow(),1).getValues(); //get column B data
const colD = ws.getRange(1,4,ws.getLastRow(),1).getValues(); //get column D data
// compare both columns data and replace col D if value is greater than col B. You can use this vice versa. Just change the comparison operator
colB.forEach(([num],i) => {
if(num < colD[i][0]) ws.getRange( i 1,4,1,1).setValue([num])
})
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/327413.html
上一篇:如何根據另一個單元格的條件獲取單元格所有作業表的總數?
下一篇:檔案選擇器邊欄通信錯誤
