我需要使用一個按鈕來洗掉 Google 表格中 Sheet1 上 A1:A25 范圍內的空行。A 列將是空單元格的參考列。我似乎找不到關于如何定義洗掉空行的范圍的簡單答案。我不希望它洗掉第 25 行以下的空行。
// Deletes any row whose first column is blank
// WARNING: Assumes any valid row has data in column 1
function deleteBlankRows() {
var doc = SpreadsheetApp.getActiveSpreadsheet();
var sheet = doc.getSheetByName("Sheet1");
var lastRow = SpreadsheetApp.getActiveSheet().getLastRow();
for (var i = lastRow; i > 0; i--) {
var range = sheet.getRange(i,1);
var data = range.getValue();
if (data == '') {
sheet.deleteRow(i);
}
}
}
uj5u.com熱心網友回復:
我相信你的目標如下。
- 當“A”列為空時,您想洗掉行。
- 作為條件,您不想洗掉第 25 行之后的行。
當你的腳本被修改時,下面的修改呢?
從:
var lastRow = SpreadsheetApp.getActiveSheet().getLastRow();
至:
var lastRow = 25;
- 在此修改中,當第 25 行的“A”列為空時,洗掉該行。當您想保留第 25 行時,請將其修改為
var lastRow = 26;。
筆記:
在你的腳本中,什么時候
deleteRow()在回圈中運行,當處理時間很長時,下面的修改腳本怎么樣?此修改后的腳本洗掉了第 25 行之前“A”列為空的行。如果要保留第 25 行,請修改var v1 = values.splice(0, 25);為var v1 = values.splice(0, 26);.function deleteBlankRows() { var doc = SpreadsheetApp.getActiveSpreadsheet(); var sheet = doc.getSheetByName("Sheet1"); var range = sheet.getDataRange(); var values = range.getValues(); var v1 = values.splice(0, 25); var res = [...v1.filter(([a]) => a.toString() != ""), ...values]; range.clearContent(); sheet.getRange(1, 1, res.length, res[0].length).setValues(res); }- 在這種情況下,當您要洗掉第 25 行之后的行時,請修改
var res = [...v1.filter(([a]) => a.toString() != ""), ...values];為var res = [...v1, ...values.filter(([a]) => a.toString() != "")];.
- 在這種情況下,當您要洗掉第 25 行之后的行時,請修改
添加:
從您的以下回復中,
對最后一行的更改效果很好。但是,我現在需要在第 11 行停止洗掉。我洗掉的代碼一直洗掉到第 1 行(我知道這就是我原來的帖子中的內容)。事情在最后幾分鐘發生了變化。
當你想洗掉從 11 到 25 的行,當你想修改你的腳本時,下面的修改怎么樣?
從:
var lastRow = SpreadsheetApp.getActiveSheet().getLastRow();
for (var i = lastRow; i > 0; i--) {
至:
var lastRow = 25;
for (var i = lastRow; i >= 11; i--) {
在此修改中,行從 11 洗掉到 25。
如果您將使用我的第二次修改,那么以下修改如何?
function deleteBlankRows() { var doc = SpreadsheetApp.getActiveSpreadsheet(); var sheet = doc.getSheetByName("Sheet1"); var range = sheet.getDataRange(); var values = range.getValues(); var v2 = values.splice(0, 25); var v1 = v2.splice(0, 10); var res = [...v1, ...v2.filter(([a]) => a.toString() != ""), ...values]; range.clearContent(); sheet.getRange(1, 1, res.length, res[0].length).setValues(res); }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/489897.html
