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
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()); }
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
- Daten anderer Tabellen kopieren (Google Tabellen Script)
- Daten einer Zelle in anderes Tabellendokument kopieren (GOOGLE Tabellen SCRIPT)
- Daten mit Script an den Listenanfang verschieben (Google Tabellen Script)
- Einfügen oder löschen einzelner Zellen bei Google Tabellen
- Google Tabellen Script autorisieren
- Hallo Welt in Google Tabellen Script
- Kalender mit Tabelle verbinden / verknüpfen (Google Tabellen Script)
- Spalte einfügen (Google Tabellen Script) Snippet
- Spalte löschen (Google Tabellen Script) Snippet
- Tutorials über Google Tabellen Script - Programmierung
- Vergleichen der Werte von Zellen mit Google Tabellen Script
- Zeitstempel programmieren in Google Tabellen
- Zelle kopieren mit copyTo (Google Tabellen Script) Snippet
- Zellenbereich kopieren mit copyTo (Google Tabellen Script) Snippet
- Übersichts-Liste der GOOGLE Tabellen Script Tutorials
5 Comments
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
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
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.
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
Hallo Chris
Vielen Dank für die super Erklärungen und die tollen Videos. Bin grad fleissig daran mich in das scripten einzulesen und habe auch schon ein Projekt dass ich umsetzen möchte. Bei einerSache hänge ich allerdings gerade fest. Vielleicht hast du mir einen Tipp, wie ich folgendes meistern kann:
Ich möchte ein Script erstellen, dass, wenn in Tabellenblatt 1 (Bereich (A3:H100) Text enthalten ist (z.B. in Spalte A stehen Namen, in Spalte B Beschreibung etc.), die Werte auf Tabellenblatt2 überträgt. Tabellenblatt2 soll eine Art Datenbank werden, mit allen Einträgen, die bisher erfasst wurden und noch so getätigt werden. Aus Tabellenblatt1 werden die Daten immer wieder verschwinden und durch Andere ersetzt, welche dann wieder in Tabellenblatt2 ergänzt werden sollen.
Werte in Tabellenblatt1 werden teils Händisch eingetragen und ein anderer Teil wird via Sverweis und der Funktion Verketten übertragen…
Mein Problem ist es, dass ich nicht weiss, wie ich das Script so hinbekomme, dass es mir alle Zeilen in Tabellenblatt2 überträgt, bei denen in Tabellenblatt1 in Spalte O ein Status auf "Erledigt" gesetzt wurde…
Ich hoffe ich konnte es einigermassen verständlich erklären.
Falls du eine Lösung hast, würde ich mich freuen.
Besten Dank
Alessandra