0

私はGoogleスプレッドシートを使用しており、問題なく次の式を使用しています:

=QUERY(Sheet!A:D,"select A, max(B) where not B is null group by A label A 'Client', max(B) 'Most Recent'")

明らかに、これは参照データの列 A と B を返していますが、列 C から対応するセルも返したいと思います。

サンプルデータ: https://docs.google.com/spreadsheets/d/1CJKiDNPUWMMUbLLb-UDA6iRA2PBnlMHDsEB9vELe0Rk/edit?usp=sharing

この例を使用して、セル G2 に「Pizza」(つまり、C3 から) が入力されていることを確認したいと思います。

正しい数式を使用していますか? 何を変更する必要がありますか?

4

3 に答える 3

1

あなたがやろうとしていることはmax(B)、特定の行を指していないため、あまりSQLのようではありません.選択された行の中でBの最大値です. この値は、複数の行によって達成される可能性があり、C、D の選択があいまいになります。単一のクエリでこれを行うことはできないと思います。

uniqueこれは、いくつかのqueryコマンドを使用した実装です。

E2 で、=unique(A:A) 一意のクライアント名のリストを取得するために入力します。F2 に入力します。

=query(A:D, "select B,C,D where A ='"&E2&"' order by B desc limit 1")

この数式を下にドラッグします。これにより、E2 と一致する A 値を持つすべての行が選択され、最大の B 値を持つ行が 1 つ選択されます。

これらのクエリの出力にヘッダー行を含めたくないので、クエリされた範囲にヘッダー行を追加するlabel B '', C '', D ''か、含めないでください。


C,D でグループ化されたバージョン

単一のクエリ内で C と D も選択するには、select句を展開します。

select A, max(B), C, D 

group by次に、句にそれらを含める必要があります。

group by A, C, D

式は

=QUERY(A:D,"select A, max(B), C, D where not B is null group by A, C, D label A 'Client', max(B) 'Most Recent'")

これは、グループ化される行は、A だけでなく C と D も等しい行だけであることを意味します。

于 2016-04-15T22:26:42.537 に答える
1

考えられる 1 つの式の解決策:

=ArrayFormula(IFERROR(VLOOKUP(UNIQUE(A2:A),SORT(A2:C,2,0),{1,2,3},0)))

于 2016-04-18T01:23:21.907 に答える