Mit Google Spreadsheets können Sie Abfragen schreiben . Wenn Sie jedoch Spaltenbuchstaben in Anführungszeichen haben, werden diese nicht aktualisiert, wenn sich die Spaltenreihenfolge ändert.
Gibt es eine Möglichkeit, diese Abfragen zu schreiben, damit sie nicht jedes Mal aktualisiert werden müssen, wenn eine Spalte hinzugefügt oder entfernt wird?
Ist es möglich, benannte Bereiche in Abfragen zu verwenden, um dieses Problem zu lösen?
Hier ein Beispiel: Wenn Sie eine Spalte nach 'F' hinzufügen, wird die Spalte 'G' auf 'H' verschoben und die Bedeutung der Formel ändert sich.
= Abfrage (B: J, "durchschnittliche (J) Gruppe nach G auswählen")
Verwandte Fragen
Diese Frage ist nicht mit der Verwendung von Abfrage mit Spaltenüberschriften anstelle von Spaltenbuchstaben identisch, da sich diese auf die Verwendung benannter Bereiche konzentriert.
Ja, Sie könnten benannte Bereiche anstelle von integrierten Spaltenüberschriften verwenden, aber die Grundidee ist dieselbe wie bei anderen Antworten auf diese und ähnliche Fragen auf dieser Site: Die Tabelle sollte so eingestellt sein, dass eine dynamische SQL-Zeichenfolge erstellt wird .
Lassen Sie sagen , dass
J
undG
auf benannte Bereiche entsprichtGrades
undClass
jeweils.Der folgende Ansatz funktioniert nur, wenn sich die Spalten zwischen den Spalten A und Z befinden
CELL("address",Grades)
wird zurückkehren"$J:$J"
. Um die SpaltenreferenzMID(CELL("address",Grades),2,1)
zu erhalten, verwenden Sie , um zu erhalten"J"
. Die endgültige Formel lautetDer folgende Ansatz funktioniert in allen Fällen
COLUMN(Grades)
gibt eine Ganzzahl zurück (eine Zahl der Form 1,2,3 usw.). Um die Formel zum Erstellen des SQL-Anweisungsarguments zu vereinfachen, schlage ich vor, SQL zu zwingen, Spaltenreferenzen der Form COL1, COL2 usw. mithilfe des Arrays zu verwenden Notation ({B:J}
). Die endgültige Formel lautetDemo-Tabelle
Verweise
Verwenden von Arrays in Google Sheets - Hilfe der Google Text & Tabellen-Editoren
quelle
Rubens Antwort löst das Problem nicht in allen Fällen, da sie
MID(CELL("address",Grades),2,1)
fehlschlägt, wenn derGrades
Bereich in eine Doppelbuchstaben-Spalte wie verschoben wird$AA:$AA
.In diesem Fall wird die Formel
MID(CELL("address",Grades),2,2)
benötigt. Für benannte Bereiche, die den$Z:$AA
Bereich überspannen oder an diesen angrenzen, wird diese Formel problematisch.Die Formel
REGEXEXTRACT( CELL("address", Grades), "\$([a-zA-Z]+)\$")
löst das Problem für den allgemeinen Fall, aber ich bezweifle stark die CPU-Effizienz, wenn sie in einer großen Tabelle verwendet wird.quelle
Ich bin auf diese Seite bei infoinspired.com gestoßen, die eine Möglichkeit erklärt, dies zu tun. Ich habe es genau wie in dem Beispiel getestet, das er gegeben hat, und es hat funktioniert. Die Einrichtung:
Seine Erklärung von F1: Die ADRESS-Formel, die die Funktionen ROW und COLUMN enthält, gibt die Zellenadresse von B1 zurück. Die Funktion LINKS extrahiert den ersten Buchstaben, der die Spaltenüberschrift ist, daraus.
--- Klicken Sie auf Zelle F1 und gehen Sie dann zum Menü Daten> Benannte Bereiche und benennen Sie den Bereich "Alter" (ohne Anführungszeichen).
Jetzt können Sie Ihre Anfrage wie folgt formulieren:
=QUERY(A:B,"Select "&Age)
Er hat kompliziertere Beispiele auf seiner Seite, die ich jetzt testen werde, aber ich bin ermutigt, dass das erste Beispiel funktioniert hat!
Bearbeiten - Entschuldigung, wenn dies genau das ist, was andere mit ihren Antworten vorgeschlagen haben. Ich fand dieses Beispiel gerade kristallklar und konnte es herausfinden. Ich dachte, es könnte anderen bei der gleichen Frage helfen.
quelle