0

クエリを書くのに少し苦労しています。

「マスター サマリー」を作成するためにクエリを作成する必要がある Google シート (ここにコピーがあります) があります。問題の列は、[マスター] タブの列 U です。基本的に、行に一致する選択された名前に対して、一致するシートから列CDEとFをインポートし、列Tに名前を付ける必要があります。

個々のシートを照会し、次のような情報をインポートする必要があることを知っています

=QUERY(MASTER!T:T,"SELECT MIRANDA! C,D,E,F WHERE MASTER!T:T ='Miranda'",0)

しかし、私はそれでどこにも行きません。私の他の考えは、次のようなSELECT関数を実行することです

=SELECT MIRANDA (C,D,E,F) WHERE MASTER!T:T ='Miranda'

しかし、それも間違っています:)私はまだSQLを学んでいるので、私の構文がオフになっていると思います。とにかく、Google アプリはわずかに変更されたバージョンを使用していると思います。私は何を間違っていますか?

4

1 に答える 1

1

クエリ関数の最初の部分は、クエリ対象の範囲です。2番目の部分は、何をつかむかです。だから私はあなたがこれを探しているかもしれないと思う:

=QUERY(MASTER!A:T,"SELECT C,D,E,F WHERE T ='Miranda'",0)

0 はヘッダーとして行を使用しないことを示しているため、列ヘッダーは表示されません。

これにより、T が Miranda である行の列 C、D、E、および F がリストされます。

編集:

個々のシートのそれぞれにタイムスタンプを表示していないため、単一の一致を取得するのは困難ですが、フォームで必要な限り、列 M をチェックするのはかなり安全です。

=FILTER(MIRANDA!C2:F, MIRANDA!C2:C=M2)

は、M2 の値に一致する Miranda タブの行の C から F までのセルの配列を返します。そのまま、数式と次の 3 つを含む列にこれらを配置します。それらを 1 つのセルに入れるには、結合する必要があります。

=join("|",FILTER(MIRANDA!C2:F, MIRANDA!C2:C=M2))

これは|を置きます 各列項目間の文字。「|」を変更 あなたがなりたいものに。

したがって、セル T の値を取得してこれを機能させるには、INDIRECT() が必要です。

=join("|",FILTER(INDIRECT( T2 & "!C:F"), INDIRECT( T2 & "!C:C")=M2))

別のオプション、特に各タブにタイムスタンプを含めた場合は、vlookup を使用してタイムスタンプ列を検索することもできます。ただし、列 M を使用するとうまく機能しない場合があります。

=VLOOKUP(M2, INDIRECT( T2 & "!C:F"), 1, FALSE)

カスタム スクリプトを使用しているため、これらのメソッドのいずれにも arrayformula() を適用できないため、カスタム スクリプトを使用して数式をコピーすることもできます。これを行うサンプルスクリプトがいくつかあると思います。問題は、別のセルを参照して範囲を取得することです。これを行う唯一の方法は、INDIRECT() 関数を使用することであり、配列をサポートしていません。別のオプションは、必要な範囲値を返し、配列式で機能するカスタム式を作成することです。

于 2017-01-09T16:31:24.730 に答える