[英]Delete Multiple Rows at once If Cell = 0 Google Sheets
如果滿足條件,此代碼可以一次刪除 1 行。 如果滿足條件,我怎樣才能讓它一次刪除 10 或 20 行?
如果滿足條件,我需要刪除大約 50-100 行時,它會非常慢。
function DeleteYESColumnF() {
// This Code will delete any "YES" in Column F.
var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getDataRange();
var numRows = rows.getNumRows();
var values = rows.getValues();
var rowsDeleted = 0;
for (var i = 0; i <= numRows - 1; i++) {
var row = values[i];
if (row[5] == 'YES') {
sheet.deleteRow((parseInt(i)+1) - rowsDeleted);
rowsDeleted++;
}
}
};
我知道應用程序腳本可以做到這一點。 我正在尋找知道要添加到此腳本中的內容的人來執行我的要求。
提前致謝
連續刪除組中的行
function runOne() {
var sheet=SpreadsheetApp.getActiveSheet();
var values=sheet.getDataRange().getValues();
var A=[];//The array of rows to delete
var d=0;
var A=values.map(function(r,i){if(r[0]==true)return i+1;}).filter(function(e){return(e);});
for(var i=0;i<A.length;) {
var n=0;
var idx=i;
while((idx+1+n)<A.length && A[idx+1+n]-A[idx+n]==1){n++;}
sheet.deleteRows(A[i]-d,n+1);
d+=n+1;
i+=n+1;
}
}
這是我的工作表在刪除開始之前的樣子。 我在第一列中有復選框作為刪除行的原因,但您可以使用任何條件
刪除后的工作表結束:
我玩了一會兒,我發現它要快一點。
//A is an Array of row numbers to delete
function dRows(A) {
var d=0;
var oA=[];
for(var i=0;i<A.length;) {
var n=0;
while((i+1+n)<A.length && A[i+1+n]-A[i+n]==1){n++;}
oA.push({row:A[i]-d,num:++n});
d+=n;
i+=n;
}
return oA;//deleteRows parameters array
}
function runTwo() {
var sheet=SpreadsheetApp.getActiveSheet();
var values=sheet.getDataRange().getValues();
var A=values.map(function(r,i){if(r[0]==true)return i+1;}).filter(function(e){return(e);});
dRows(A).forEach(function(r){sheet.deleteRows(r.row,r.num)});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.