Verwendung von ARRAYFORMULA mit QUERY in Google Sheets


10

Ich habe eine Abfrage, die für jede Zeile in einer Liste ausgeführt werden muss. Es funktioniert gut, wenn es für eine einzelne Zeile geschrieben wird:

QUERY(MaraRankData,
  "select J,I,H,G,F,E where 
    A='"&E3&"' and 
    B='"&B3&"' and 
    C="&C3&" and 
    D="&D3&"",
  0
)

Dadurch wird nach Wunsch eine Datenzeile ausgegeben. Aber wenn ich es in ARRAYFORMULA einpacke, gibt es immer noch nur eine Zeile statt vieler aus:

=ARRAYFORMULA(
  QUERY(MaraRankData,
    "select J,I,H,G,F,E where 
      A='"&E3:E&"' and 
      B='"&B3:B&"' and 
      C="&C3:C&" and 
      D="&D3:D&"",
    0)
)

Google Sheets wirft keine Fehler aus, daher weiß ich nicht, was ich falsch mache. Wie kann ich ARRAYFORMULA dazu bringen, mit meiner QUERY zu arbeiten, damit ich die Formel nicht in jeder Zeile wiederholen muss?


Zur Unterstützung des Kommentars von Rotwein zum Umschließen einer Query () - Formel mit einer Arrayformel. Es ist nicht erforderlich, eine Formel zu verpacken, die bereits ein Ergebnis vom Typ Array zurückgibt / erzeugt. Dh Arrayformula nicht auf "Filter", Unique, "Transponieren" usw.
anwenden

1
Die meiste Zeit, in der Sie eine Abfrage verwenden können, funktioniert die Filterformel. Ich wette, Sie können Ihr Problem auf diese Weise einfacher lösen.
Xzila

@Xzila Wenn Sie eine Möglichkeit haben, dies zu tun filter, schreiben Sie bitte eine Antwort: Ich wäre an einer solchen Lösung interessiert.

2
=FILTER({E:E,F:F,G:G,H:H,I:I,J:J},A3:A=E3:E)Der erste Teil besteht nur darin, die Spalten in den geschweiften Klammern neu zu ordnen. Das zweite ist, weil A bis E die einzige Spalte zu sein scheinen, die wichtig ist, wenn B sich selbst betrachtet, C sich selbst betrachtet usw. Wirklich, obwohl ein Datensatz nett wäre und vielleicht mehr Erklärung für das Problem. Vielleicht verstehe ich es einfach nicht.
Xzila

Antworten:


10

Die arrayformula(query(...))Kombination wird nicht unterstützt. Es gibt kein Konzept für die queryVerarbeitung eines Arrays von Arrays oder die Ausführung eines Arrays von Abfragezeichenfolgen.

Sie haben zwei Möglichkeiten: (a) Wiederholen Sie queryin jeder Zeile; (b) Verwenden Sie vlookupdiese Option, um Datenspalten abzurufen, wie nachstehend erläutert. Zum Beispiel:

=arrayformula(vlookup(E3:E, {A3:A, J3:J}, 2, false))

Nimmt jeweils ein Element von E3: E, findet dieses Element in Spalte A und ruft das entsprechende Element in Spalte J ab. Bei diesem Ansatz würden Sie sechs separate Lookups benötigen, um die Spalten J, I, H, G, F, zu erhalten. E, aber Sie benötigen nicht für jede Zeile einen eigenen Befehl.

Eine Komplikation besteht darin, dass vlookupnur ein Suchschlüssel akzeptiert wird und Sie nach 4 Parametern suchen möchten.

A='"&E3&"' and 
B='"&B3&"' and 
C="&C3&" and 
D="&D3&

Dies kann umgangen werden, indem diese zu einem Suchschlüssel verkettet werden: Sie können eine Spalte wie Z,

=arrayformula(E3:E & "|" & B3:B & "|" & C3:C & "|" & D3:D)

Dadurch werden vier Suchparameter zu einem durch Pipe getrennten Suchschlüssel verkettet. Machen Sie dasselbe für die zu durchsuchende Tabelle und vergleichen Sie diese Schlüssel dann mit vlookup.


3
In Bezug auf die erste Anweisung funktioniert die Verschachtelungsabfrage innerhalb der Arrayformel für das erste Argument. Siehe webapps.stackexchange.com/a/97658/88163
Rubén
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.