簡體   English   中英

一次刪除多行如果 Cell = 0 Google Sheets

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM