Jak korzystać z ARRAYFORMULA z QUERY w Arkuszach Google

11

Mam zapytanie, które należy uruchomić dla każdego wiersza na liście. Działa ładnie, gdy jest napisany dla jednego wiersza:

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

Daje to rząd danych zgodnie z potrzebami. Ale kiedy zawijam go w ARRAYFORMULA, nadal wyświetla tylko jeden wiersz zamiast wielu:

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

Arkusze Google nie zgłaszają żadnych błędów, więc nie wiem, co robię źle. Jak mogę zmusić ARRAYFORMULA do pracy z moim zapytaniem, aby nie musiałem powtarzać formuły w każdym wierszu?

Stobber
źródło
Aby wesprzeć komentarz czerwonego czerwonego wina na temat zawijania formuły Query () Arrayformula. Nie ma potrzeby zawijania żadnej formuły, która już zwraca / daje wynik typu tablicowego. Nie stosuję Arrayformula do „Filter”, Unique, „„ Transpose ”itp.
Xzila
1
Również przez większość czasu, gdy możesz użyć zapytania, formuła Filtr będzie działać. Założę się, że w ten sposób możesz rozwiązać swój problem.
Xzila,
@Xzila Jeśli masz na to sposób filter, napisz odpowiedź: Byłbym zainteresowany takim rozwiązaniem.
2
=FILTER({E:E,F:F,G:G,H:H,I:I,J:J},A3:A=E3:E)Pierwszą częścią jest po prostu ponowne uporządkowanie kolumn w nawiasach klamrowych. Po drugie, od A do E wydaje się jedyną kolumną, która ma znaczenie, gdy B patrzy na siebie, C patrzy na siebie itp. Naprawdę, chociaż zestaw danych byłby miły i być może więcej wyjaśnień na temat problemu. Może po prostu nie rozumiem.
Xzila,

Odpowiedzi:

10

arrayformula(query(...))Kombinacja nie jest obsługiwany; nie ma koncepcji queryprzetwarzania tablicy tablic ani wykonywania tablicy ciągów zapytań.

Masz dwie opcje: (a) powtarzanie queryw każdym rzędzie; (b) użyj vlookupdo pobrania kolumn danych, jak wyjaśniono poniżej. Na przykład:

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

pobiera jeden element E3: E na raz, znajduje ten element w kolumnie A i pobiera odpowiedni element z kolumny J. Przy takim podejściu potrzebujesz sześciu osobnych podglądów, aby uzyskać kolumny J, I, H, G, F, E, ale nie potrzebujesz osobnego polecenia dla każdego wiersza.

Komplikacja polega na tym, że vlookupakceptuje tylko jeden klucz wyszukiwania i chcesz wyszukiwać według 4 parametrów,

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

Można to obejść, łącząc je w jeden klucz wyszukiwania: możesz mieć kolumnę taką jak Z,

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

który łączy cztery parametry wyszukiwania w jeden klucz wyszukiwania rozdzielany potokami. Zrób to samo, aby przeszukać tabelę, a następnie porównaj te klucze za pomocą vlookup.


źródło
3
W odniesieniu do pierwszej instrukcji zagnieżdżenie zapytania w tablicy formuły działa dla pierwszego argumentu. Zobacz webapps.stackexchange.com/a/97658/88163
Rubén