我已經設法自動化了我的很多公司作業表檔案,但是這個檔案已經困擾我很長時間了。
我正在嘗試自動化一個腳本來掃描這個給定的范圍 F11:F20 并且如果 value == "" 然后我清除左邊的下一行。下面這個只有在所有欄位都為空時才有效(這需要一段時間,我在網上找到了這個,所以回圈條件可能很混亂),我試圖做一個 for 回圈,while 回圈,我試過了除了使用 if 和 if else 陳述句對其進行硬編碼之外,可能還有 15 件事(我想正確地進行),但我只是不知道如何向下導航某些單元格以進行一般的掃描和洗掉。
F11:F20 范圍的影像
var ss = SpreadsheetApp.getActiveSpreadsheet();
var numCol = SpreadsheetApp.getActiveSheet().getLastColumn();
var range, substring1;
//loop
for (var i = 1; i <= numCol; i ) {
//Here is the magic
range = ss.getRange("F11:F20");
substring1 = range.getValue();
if ( substring1 === '') {
range.offset(0, -1).clearContent();
}
}
}
uj5u.com熱心網友回復:
改裝要點:
- 當
getRange和getValue回圈使用時,程序成本會很高。參考 - 在您的情況下,我想提出以下流程。
- 從“F11:F20”中檢索值。
- 創建用于清除單元格的范圍串列。
- 使用范圍串列清除內容。
當這個流程反映到腳本中時,它變成如下。
修改后的腳本:
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var values = sheet.getRange("F11:F20").getValues();
var ranges = values.reduce((ar, [f], i) => {
if (f == "") ar.push("E" (i 11));
return ar;
}, []);
sheet.getRangeList(ranges).clearContent();
}
- 在此腳本中,使用活動作業表。當您要使用特定作業表時,請修改
var sheet = SpreadsheetApp.getActiveSheet();為var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("###sheetname###");。
參考:
- 降低()
- getRangeList(a1Notations)
uj5u.com熱心網友回復:
我在這里沒有看到任何迭代......你在哪里迭代 i?看起來它每次通過回圈都在查看相同的單元格。
這只會回傳您范圍內第一個單元格的值,如果您做得對,這將是 F11 中的值。
我想你想要這樣的東西(不確定范圍是基于零還是基于 1)
for (var i = 1; i <= numCol; i ) {
range = ss.getRange(10 i,6);
substring1 = range.getValue();
if ( substring1 === '') {
range.offset(1, -1).clearContent();
}
}
如果范圍從零開始,那么獲取范圍應該是 (9 i, 5)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/310797.html
