Cara menggunakan ARRAYFORMULA dengan QUERY di Google Sheets

11

Saya memiliki permintaan yang harus dijalankan untuk setiap baris dalam daftar. Ini berfungsi dengan baik ketika ditulis untuk satu baris:

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

Itu menghasilkan deretan data, seperti yang diinginkan. Tetapi ketika saya membungkusnya dalam ARRAYFORMULA, masih hanya menghasilkan satu baris, bukan banyak:

=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 tidak melakukan kesalahan, jadi saya tidak tahu apa yang saya lakukan salah. Bagaimana saya bisa membuat ARRAYFORMULA berfungsi dengan QUERY saya jadi saya tidak perlu mengulangi rumus pada setiap baris?

Stobber
sumber
Untuk mendukung komentar dengan anggur merah merah tentang pembungkus rumus Query () dengan Arrayformula. Tidak perlu membungkus formula apa pun yang sudah mengembalikan / menghasilkan hasil jenis array. Yaitu saya tidak menerapkan Arrayformula ke "Filter", Unik, "" Transpose, "dll.
Xzila
1
Juga sebagian besar waktu Anda dapat menggunakan Kueri, rumus Filter akan berfungsi. Saya yakin Anda bisa menyelesaikan masalah Anda dengan lebih mudah.
Xzila
@Xzila Jika Anda memiliki cara untuk melakukan ini filter, silakan kirim jawaban: Saya akan tertarik dengan solusi seperti itu.
2
=FILTER({E:E,F:F,G:G,H:H,I:I,J:J},A3:A=E3:E)Bagian pertama hanya untuk memesan ulang kolom di kurung keriting. Yang kedua adalah karena A ke E sepertinya satu-satunya kolom yang penting karena B melihat dirinya sendiri, C melihat dirinya sendiri, dll. Benar-benar meskipun kumpulan data akan bagus, dan mungkin lebih banyak penjelasan tentang masalah tersebut. Mungkin saya tidak mengerti.
Xzila

Jawaban:

10

The arrayformula(query(...))Kombinasi tidak didukung; tidak ada konsep querypemrosesan array array atau mengeksekusi array string kueri.

Anda memiliki dua opsi: (a) ulangi querydi setiap baris; (B) digunakan vlookupuntuk mengambil kolom data, seperti yang dijelaskan di bawah ini. Sebagai contoh:

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

mengambil satu elemen E3: E sekaligus, menemukan elemen ini di kolom A, dan mengambil elemen yang sesuai dari kolom J. Dengan pendekatan ini, Anda akan memerlukan enam vlookup terpisah untuk mendapatkan kolom J, I, H, G, F, E, tetapi Anda tidak akan memerlukan perintah terpisah untuk setiap baris.

Masalahnya adalah vlookuphanya menerima satu kunci pencarian, dan Anda ingin mencari berdasarkan 4 parameter,

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

Ini dapat dikerjakan dengan menggabungkan ini menjadi satu kunci pencarian: Anda dapat memiliki kolom seperti Z,

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

yang menggabungkan empat parameter pencarian menjadi satu kunci pencarian terbatas pipa. Lakukan hal yang sama untuk tabel yang akan dicari, dan kemudian bandingkan menggunakan kunci ini vlookup.


sumber
3
Mengenai pernyataan pertama, permintaan Nesting di dalam arrayformula berfungsi untuk argumen pertama. Lihat webapps.stackexchange.com/a/97658/88163
Rubén