it-swarm.com.de

Wie füge ich automatisch eine neue Zeile ein und behalte Funktionen / Formeln aus der letzten Zeile?

Ich habe eine Tabelle mit Zellen, die Funktionen/Formeln haben, wie diese:

enter image description here

Ich benötige ein Skript, das eine neue Zeile erstellt und damit die Funktionen/Formeln der zuletzt verwendeten Zeile kopiert. Ich finde dieses Skript, das eine neue Zeile erstellt, aber keine Funktionen/Formeln kopiert . Wie kann ich diese Formatierungskopieraufgabe in Google Apps Script implementieren, ohne sie manuell auswählen und kopieren zu müssen?

Verwenden Sie den folgenden Code, um auch Formeln als normale Werte zu kopieren. Fügen Sie den Code hinzu, indem Sie im Tabellenkalkulationsmenü die Option Extras auswählen. Wählen Sie dann den Skript-Editor und fügen Sie den Code hinzu. Stellen Sie sicher, dass Sie auf die Schaltfläche "Fehler" klicken und das Skript authentifizieren.

Code

// global 
var ss = SpreadsheetApp.getActive();

function onOpen() {
  var menu = [{name:"Add New Last Row", functionName:"addRow"}];
  ss.addMenu("Extra", menu);
}

function addRow() {
  var sh = ss.getActiveSheet(), lRow = sh.getLastRow(); 
  var lCol = sh.getLastColumn(), range = sh.getRange(lRow,1,1,lCol);
  sh.insertRowsAfter(lRow, 1);
  range.copyTo(sh.getRange(lRow+1, 1, 1, lCol), {contentsOnly:false});
}

Anmerkung

Wenn Sie contentOnly auf false setzen, erhalten Sie eine Standardkopie. Wenn Sie true wählen, werden nur Werte eingefügt. Das Beispielskript, das Sie gefunden haben, ist weitaus mehr als das Einfügen von Werten.

Beispiel

Ich habe eine Beispieldatei für Sie erstellt: Zeile mit Formeln hinzufügen

19

Diese ArrayFormula kann genau dasselbe tun, ohne ein Skript einzubeziehen. Geben Sie es in D4 ein und es wird automatisch in eine beliebige Anzahl von leeren Zellen darunter übertragen.

ArrayFormula(vlookup(B4:B:tax_table!$A$2:$G$8;3;true))

Anmerkungen: "B4: B" bedeutet, dass alle Zellen von B4 bis zum Ende der Spalte betrachtet werden.

Währenddessen kopiert sich ArrayFormula selbst in die Zellen darunter. Stellen Sie einfach sicher, dass die Zellen darunter leer sind.

3
user3660579

Wenn Sie eine neue Zeile oben (erste Zeile) hinzufügen und die Formel aus der ersten oberen Zeile kopieren müssen, müssen Sie die Formeln mit den Funktionen getFormulas() und setFormulas() kopieren. Sie können den Wert von firstRow in 2 ändern, wenn Ihre Tabelle beispielsweise Überschriften enthält.

function addFirstRow() {
    var firstRow = 1;
    var sh = ss.getActiveSheet();
    var lCol = sh.getLastColumn();
    var range = sh.getRange(firstRow, 1, 1, lCol);
    var formulas = range.getFormulas();
    sh.insertRowsAfter(1, 1);
    newRange = sh.getRange(firstRow, 1, 1, lCol);
    newRange.setFormulas(formulas);
}
3
dgpro