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
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