リスト内のすべての行に対して実行する必要があるクエリがあります。単一の行に対して記述されている場合、うまく機能します。
QUERY(MaraRankData,
"select J,I,H,G,F,E where
A='"&E3&"' and
B='"&B3&"' and
C="&C3&" and
D="&D3&"",
0
)
必要に応じて、データの行が出力されます。しかし、ARRAYFORMULAでラップすると、多くの行ではなく1行のみが出力されます。
=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スプレッドシートではエラーがスローされないため、何が間違っているのかわかりません。すべての行で数式を繰り返す必要がないように、ARRAYFORMULAをクエリで動作させるにはどうすればよいですか?
arrayformula(query(...))
の組み合わせはサポートされていません。 query
が配列の配列を処理したり、クエリ文字列の配列を実行したりするという概念はありません。
次の2つのオプションがあります。(a)すべての行でquery
を繰り返します。 (b) vlookup
を使用して、以下で説明するように、データの列を取得します。例えば:
=arrayformula(vlookup(E3:E, {A3:A, J3:J}, 2, false))
一度にE3:Eの1つの要素を取り、列Aでこの要素を見つけ、列Jの対応する要素を取得します。このアプローチでは、列J、I、H、G、Fを取得するために6つの個別のvlookupが必要です。 E。ただし、行ごとに個別のコマンドは必要ありません。
複雑なのは、vlookup
が1つの検索キーのみを受け入れ、4つのパラメーターで検索したい場合、
A='"&E3&"' and
B='"&B3&"' and
C="&C3&" and
D="&D3&
これを回避するには、これらを1つの検索キーに連結します。Z、
=arrayformula(E3:E & "|" & B3:B & "|" & C3:C & "|" & D3:D)
4つの検索パラメーターを1つのパイプ区切り検索キーに連結します。検索するテーブルに対して同じことを行い、vlookup
を使用してこれらのキーを比較します。