2016-11-19 3 views
0

Ich muss alle leeren Zeilen in einem Blatt mit Google-Skript löschen. Bisher habe ich den Standard-Ansatz versucht:So löschen Sie alle (Pseudo) leere Zeilen in Google Tabellen

function removeEmptyRows(){ 
    var sh = SpreadsheetApp.getActiveSheet(); 
    var maxRows = sh.getMaxRows(); 
    var lastRow = sh.getLastRow(); 
    sh.deleteRows(lastRow+1, maxRows-lastRow); 
} 

Dies funktioniert gut für wirklich leere Zeilen, aber nicht, wenn es um Reihen kommt, die von „unsichtbaren Werten“ aus Matrixformeln belegt ist, obwohl diese Formeln Verwenden Sie IFERROR(1/0).

Wie lösche ich alle Zeilen, die Leerzeichen enthalten?

+0

Haben Sie gerade Zeilen zwischen der letzten Zeile mit Inhalt bedeuten und der Unterseite des Blattes, oder jeder leeren Zeile? z.B. Wenn Zeile 1 keinen Inhalt hat, aber Zeile 2, soll Zeile 1 gelöscht oder an Ort und Stelle bleiben? – Bardy

+0

Verwenden Sie den Mogsdad-Code in diesem Thread, um die "echte" letzte Zeile zu erhalten: http://stackoverflow.com/questions/6882104/faster-way-to-find-the-first-empty-row/18319032#18319032 –

Antwort

0

Wie wäre es mit dem Skript? In diesem Skript werden Zellen mit nur Leerzeichen (Leerzeichen) in "null" geändert.

  1. Daten in allen Zellen werden in ein Array eingegeben.
  2. Alle Elemente mit nur Leerzeichen werden mit regulärem Ausdruck in "null" geändert. Wenn Zellen einige Symbole haben, ändern Sie bitte den regulären Ausdruck.
  3. Elemente des Arrays werden in das Arbeitsblatt überschrieben.

    function removeEmptyRows() { 
        var sh = SpreadsheetApp.getActiveSheet(); 
        var data = sh.getDataRange().getValues(); 
        for (var i in data){ 
         for (var j in data[i]){ 
          if (data[i][j].length > 0 && !/^[a-zA-Z0-9]+$/.test(data[i][j])){ 
           data[i][j] = null; 
          } 
         } 
        } 
        sh.getRange("A1").offset(0,0, data.length, data[0].length).setValues(data); 
    } 
    
Verwandte Themen