Aktive Zeile in andere Tabelle kopieren

In diesem kurzen Tutorial und zugleich Snippet zeige ich Euch wie Ihr mit der Google Tabellen Script Programmierung die ausgewählte Zeile in ein anderes Tabellenblatt kopieren könnt.

Wer jetzt das erste mal ein Google Tabellen Script programmiert sollte sich zuerst dieses Tutorial hier anschauen: Mein erstes Google Tabellen Script programmieren



Beschreibung:

In diesem Beispiel werden wir die gerade aktive oder ausgewählte Zeile in ein anderes Tabellenblatt kopieren. Dafür müssen wir natürlich erst einmal die Zeilennummer der aktiven Zelle wissen. Anschließend wird ein Bereich dieser Zeile in die andere Tabelle kopiert. Die Größe des Bereichs könnt Ihr natürlich anpassen. Die Kopie wird im neuen Tabellenblatt automatisch in die erste noch nicht beschriebene Zeile geschrieben. Somit könnt Ihr das schon fast wie eine kleine Datenbank benutzen.

Die Funktion selbst ist relativ simpel. Man könnte diese sicher noch sehr viel kürzer schreiben aber ich denke zum besseren Verständnis sollte es so OK sein.

Zuerst greifen wir auf das aktive Tabellenblatt zu.
Anschließend lesen wir von der ausgewählten Zelle die Zeilennummer aus. Dafür benutze ich sheet.getActiveCell().getRow() .
In der nachfolgenden Zeile lege ich den Namen der Zieltabelle fest. Hier habe ich "Tabellenblatt2" benutzt da Google Tabellen den Namen für ein neues Tabellenblatt automatisch vergibt wenn Ihr das Plussymbol ganz unten benutzt. Hier könnt Ihr natürlich ein anderes Tabellenblatt benutzen. Wichtig ist aber das dieser Tabellenname auch existiert.

Mit getSheetByName(zielTabellenName) kann man über den Tabellennamen auf eine Tabelle zugreifen. Also greifen wir hier genau auf das Tabellenblatt2 zu.

Danach möchte ich noch wissen welches die erste noch nicht beschriebene Zeile dieser Zieltabelle ist. Das mache ich über getLastRow().

In der letzten Zeile greifen wir mit getRange auf den Bereich der Zieltabelle zu und schreiben mit setValue die Werte dort rein. setValues bekommt als Parameter die Daten der Quelltabelle. Der Bereich der Quelltabelle wird wieder mit getRange für den Bereich und getValues für die Werte eingelesen.

Aufgerufen wird die Funktion mit aktiveZeileInAndereTabelleKopieren. Dieses Script könnt Ihr über Buttons (Zeichnungen oder Bilder) mit diesem Namen zuweisen.

Vorab ein Video welches Euch zeigt wie man ein einfaches Script programmieren kann und wie Ihr den Scripteditor aufrufen könnt:
Mein erstes Script programmieren mit GOOGLE Tabellen

Achtung:

Benutzt zum Üben eine separate Tabelle für Testzwecke oder eine Kopie des Originals damit Euch keine Daten verloren gehen.

Snippet: Aktive Zeile in andere Tabelle kopieren mit Google Tabellen Script Programmierung

Die Benutzung der Scripte erfolgt natürlich wie immer auf eigene Gefahr.

Euch gefällt das Script und Ihr wollt Euch gerne bedanken?
Hier ist meine AMAZON – Wunschliste [HIER KLICKEN] 😉

Dies ist Teil der Serie: "Google Tabellen Script Programmierung"

Dieses Tutorial ist Teil einer Serie die als eine Art Datenbank für kleinere Snippets dient. Damit habt Ihr die Möglichkeit für Eure Projekte einen Teil des Codes hier direkt zu kopieren und wie in Modulbauweise das ganze anzuwenden.

Die Liste aller Snippets findet Ihr hier:
Google Tabellen Script Programmierung



Das könnte Dich auch interessieren

4 Kommentare

  1. Deemarco sagt:

    Hallo Chris,
    Erst einmal danke für das was du machst und zeigst:) hab sehr viel gelernt von Dir weiter so.
    Nun zu mein Problem….. Ich möchte aus einer erstellten Tabelle gewisse Daten auf ein anderes Tabellenblatt kopieren. Dein Beispiel funktioniert sehr gut doch leider komm ich nicht auf die gewünschten Daten die ich ausgelesen haben möchte. Kleines Beispiel ich möchte vom Aktiven blatt die Zelle F26 in ein anderes Tabbellenblatt A1 haben. Ist so etwas machbar?

    Lg Marco

    • Chris sagt:

      Hallo Marco, wenn ich Dich jetzt nicht falsch verstanden habe, dann müsste eigentlich diese Funktion genau das richtige für Dich sein:
      https://toptorials.com/zellen-in-andere-tabellen-kopieren-google-tabellen-script-snippet/
      Hier musst Du dann nur die Quelle und das Ziel angeben. In dem Beispiel ist als Quelle ein Bereich angegeben. Hier kannst Du aber auch eine einzelne Zelle eintragen, also Deine F26. Das Ziel entspricht schon dem was Du geschrieben hast. Hier wird dann vom aktiven Tabellenblatt in das Tabellenblatt kopiert was in der letzten Zeile angegeben ist. Hier kannst Du dann auch einen anderen Namen benutzen. Das Tabellenblatt muss aber natürlich vorhanden sein damit es funktioniert.
      Viele Grüße
      Chris

      • Deemarco sagt:

        ich hatte dein beispiel: Snippet: Aktive Zeile in andere Tabelle kopieren mit Google Tabellen Script Programmierung genommen da ich daduch auch ein butten belegen kann.
        Mein Projekt sieht so aus, ich habe 6 Rechner alle mit Rechner1 usw. Beschiftet Die Rechner werden von verschiedenen Personen genutzt. Nur durch drückendes Butten möchte ich Daten aus den Rechner haben auf ein Tabellenblatt wie zb, Name der Person, einen Grund und eine Zahl..
        Wie gesagt dein Beispiel
        function aktiveZeileInAndereTabelleKopieren(){

        // Aktives Tabellenblatt
        var sheet = SpreadsheetApp.getActiveSheet();

        // Aktiver Bereich und auslesen der Zeile
        var row = sheet.getActiveCell().getRow();

        // Tabellenblattname wo die Daten gespeichert werden sollen
        var zielTabellenName="Tabellenblatt2";

        // Auf die Zieltabelle zugreifen
        var zielTabelle=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(zielTabellenName);

        // Letzte Zeile der Zieltabelle auslesen
        var letzteZeileVonZielTabelle=zielTabelle.getLastRow();

        zielTabelle.getRange((letzteZeileVonZielTabelle+1),1,1,10).setValues(sheet.getRange(row,1,1,10).getValues());
        }
        funktioniert nur kopiert er mir da zu viel und nicht das Gewünschte. Wenn ich bei der Zeile zielTabelle.getRange((letzteZeileVonZielTabelle+1),1,1,10).setValues(sheet.getRange(row,1,1,10).getValues())……..; die Zahlen änder bekomm ich entweder nichts oder der wert passt nicht.

        • Chris sagt:

          Soweit funktioniert das Script einwandfrei wie ich gerade schnell mal getestet habe.
          Wenn Du einzelne Werte haben willst, dann könntest Du das in etwa so machen:

          zielTabelle.getRange((letzteZeileVonZielTabelle+1),1).setValue(sheet.getRange(row,1).getValue());

          Wenn Du vor getValue die 1 zum Beispiel in eine 5 änderst, wird Dir die Zelle in der 5 Spalte in die andere Tabelle kopiert und steht dann dort in der ersten Spalte.
          Solltest Du größere Bereiche nehmen wollen, dann musst Du Deine Zeile entsprechend anpassen. Du musst aber darauf achten wie das mit den Parametern bei getRange genau funktioniert. Die letzten Beiden Parameter geben sozusagen die Boxgröße an.
          https://developers.google.com/apps-script/reference/spreadsheet/sheet#getrangerow-column-numrows-numcolumns

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.