Funktion query() ähnliche Abfragen wie bei SQL (Google Tabellen)
In diesem Tutorial zeige ich Euch wie Ihr bei den GOOGLE TABELLEN die Funktion QUERY nutzen könnt. Ich bin ehrlich gesagt total begeistert von den Möglichkeiten. Das hängt aber sicher auch damit zusammen das ich früher sehr viel mit PHP gearbeitet habe und dabei sehr oft MySQL – Datenbanken benutzt habe.
Mit der Funktion QUERY habt Ihr die Möglichkeit nämlich SQL ähnliche Abfragen zu starten. Damit lassen sich schnell komplexe Abfragen aufbauen und die Ergebnisse entsprechend Filtern und gruppieren. Also ich bin ein absoluter Fan von dieser Funktion. Schaut es Euch mal an. Es gibt auch noch weitere Tutorials mit dieser Funktion von mir.
Wer noch einen Schritt weiter gehen möchte, der kann sich ja auch mal die Kombination von QUERY und IMPORTRANGE anschauen:
importrange und query kombinieren (Google Tabellen)
Dieses Tutorial ist extra für Anfänger die sich mit dem Tabellenkalkulationsprogramm GOOGLE TABELLEN / SPREADSHEETS noch nicht so viel beschäftigt haben und zeigt die Funktionen und Möglichkeiten Schritt für Schritt.
Das Video-Tutorial "Funktion query() ähnliche Abfragen wie bei SQL (Google Tabellen)"
15 Comments
Hallo,
eine kurze Frage: In meiner Tabelle funktioniert der Query fast einwandfrei.
Bestimmte Datensätze aus Tabellenblatt A werden in Tabellenblatt B richtig ausgelesen.
Wenn ich aber in Tabellenblatt A die Reihenfolge der Datensätze mittels automat. Filter ändere (bspw. alphabetisch sortiere), bekomme ich in Tabellenblatt B falsche Daten angezeigt.
Die Fehlermeldung lautet: "Parameter 1 der Funktion "MINUS"" hat Zahl-Werte. Allerdings ist " " ein Text-Wert und kann nicht zu einem Zahl-Wert gewzungen werden.
Der Datensatz in Tab. A ist aber eine Zahl (und auch im Zahlenformat).
Ich verzweifle..
Hi Quasimodo,
laut der Fehlermeldung sieht es dennoch so aus als wenn der erste Parameter ein Text ist. Kann es sein dass Du auf die falsche Tabelle zugreifst um das zu berechnen? Ich weiß ja nicht genau wie Deine Tabelle aufgebaut ist aber schau Dir den ersten Parameter der Formel nochmal ganz genau an und prüfe oder ändere das mal indem Du auch den Tabellennamen vor den Bezug setzt. Also so in der Form =Tabellenblatt1!A1-Tabellenblatt1!A2
Hallo Chris,
klasse Videos.
Ist es auch möglich in der Abfrage einen Zellinhalt als Argument anzugeben?
Hi Dieter,
Das könntest Du zum Beispiel mit der Funktion VERKETTEN realisieren. Das würde dann in etwa so aussehen:
=query($A$1:$D$15;VERKETTEN("select B,sum(D) where C='Kameras' and B='";N2;"' group by B"))
N2 ist dann in dieser Formel die Zelle wo Du etwas eintragen kannst.
Hallo Chris,
ich habe noch eine Frage zu der QUERY Funktion.
Ich kann in meiner Liste nur 16 Einträge ausgeben lassen. Das ist mit LIMIT 16 auch kein Problem.
Jetzt möchte ich auf der Seite 2 die Einträge ab 17 bis 32 anzeigen lassen.
Was muss ich da eingeben. ich habe schon gegoogelt aber nichts gefunden.
Vielen Dank im Voraus für deine Hilfe.
Du kannst hinter dem Limit noch offset schreiben. Das sieht in einem Beispiel dann so aus:
=query(A:A;"SELECT * LIMIT 16 offset 16")
LIMIT limitiert die Ausgabe und OFFSET gibt die erste Position aus nach der ausgegeben werden soll.
Viele Grüße
Chris
Hallo Chris,
ich versuche per query einen datenblock (der sich regelmäßig ändert) zu übertragen aber bekomme es nicht hin das die funktion dabei bestimmte werte (bei mir 0 ) filtert (also nicht anzeigt) .
Ich habe es mit verschiedenen sachen versucht (min() , where is not null/ where is not 0, und noch ein paar anderen…), die query schmeist mir aber immer nur einen #WERT! fehler raus und per google bekomme ich nur sachen die ich schon probiert habe aberkeine genaue erklärung. Vieleicht habe ich die sachen auch nur falsch angewendet.
Die frage ist jetzt ob du eine lösung dafür hättest.
grundformel bei mir wäre (A=zahlen B=namen): =QUERY('Tabellenblatt3'!A2:B17;"select B,A")
Vielen Dank im vorraus und Viele Grüße
Patrick
PS: deine Tutorials haben mir bis jetzt gut geholfen. Vielen Dank dafür
Versuche mal folgendes:
Zeigt alles was keine 0 enthält:
=QUERY(Tabellenblatt3!A2:B17;"select B,A WHERE A!=0")
Zeigt nur was eine 0 enthält:
=QUERY(Tabellenblatt3!A2:B17;"select B,A WHERE A=0")
Funtioniert einwandfrei auch mit anderen werten und mit anderen zusätzen (wie "group by" "sum()" usw)
Vielen Dank für die schnelle Hilfe
Wunderbar, freut mich zu hören das es klappt 🙂
Hallo Chris
Ich habe eine Frage. Ich habe diese Query-Funktion ausprobiert aber sie funktioniert nicht so wie ich es gerne hätte.
Ziel wäre es mit dem folgenden Befehl alle Zeilen in ein anderes Tabellenblatt zu kopieren bei der in der Spalte E das Wort "Lieferant A" vorkommt.
=query(Kalkulation!A2:G300;"select * where E=´Lieferant A´";0).
Hoffe du kannst mir bei meinem Problem weiter helfen. Habe schon alle möglichen Kombinationen und Varianten ausprobiert. Ich weis nicht mehr weiter.
Vielen Dank schon im voraus.
Gruß Mchael König
Hallo Chris,
ich möchte gerne bei der Formel =QUERY(Tabelle1!A:H; "select * order by A asc"; -1) die Spalte A, nach welcher sortiert werden soll, nicht fest in die Formel schreiben, sondern auf eine Zelle verweisen, in der der Buchstabe der zu sortierenden Spalte eingetragen werden kann.
Das ist daher notwendig, da man offensichtlich in den Daten, welche mit QUERY() in ein Tabellenblatt geschrieben wurden, nicht mit der Filterfunktion von Google sortieren kann. Filtern geht, aber nicht sortieren.
Hast Du eine Idee, wie ich das Problem lösen kann?
Vielen Dank,
Torsten
Huhu liebe Leute,
ist es möglich mit =query() 2 Spalten untereinander zu schreiben?
Die beiden Spalten sind als Bereich definiert, Spalte B:B heißt "DE" und Spalte F:F heißt "Ö".
Meine Vorhaben:
ich hole mir mit =importrange() Kundennummer aus 2 verschiedenen Tabellen. Am Ende hätte ich gerne alle Kundennummern untereinander in einer Spalte stehen. Der import klappt auch problemlos so dass ich nun die Kundenummer aus Deutschland neben den Kundennummer aus Österreich stehen habe. Am Ende würde ich gerne die beiden Spalten zu einer Spalte verbunden und das ganze soll dynamisch bleiben so dass wenn neue KdNr. in den ursprünglichen Tabellen eingegeben werden sich meine Liste erweitert.
Halo Chris,
ich möchte gerne bevor das Skript meine Urlaubstage löscht, ein Abfrage," wirklich alles löschen?! " Was müsste ich noch zusätzlich eintragen?
Würde mich über eine Rückmeldung sehr freuen.
Herzliche Grüße
Frank
Hallo Frank, die Funktion löscht keine Einträge. Das ist eine Funktion die im Prinzip wie die SUMME -Funktion nur Ergebnisse liefert. Nimmst Du die Funktion also wieder raus ist alles wie vorher.
Trotzdem ist es natürlich immer ratsam vorerst eine Kopie des Originals zu verwenden und damit etwas herumzuexperimentieren 😉