2

A1には、Sheet1 のAの一意の転置されたデータが含まれています

=TRANSPOSE(UNIQUE(QUERY(Sheet1!$A:$A;"select A";1)))

A2には次のコードが含まれています。

=QUERY(Sheet1!$A:$B;"select B where A like '%"&A1&"%'";0)

Sheet1には、ラベルの列Aとラベルの高さの列Bがあります。

名前にはさまざまな量のデータがあります。これが、最新のデータのみをリストしたい理由です。そう: A2のクエリを減らして、データを並べ替えずに最後の 3 つのコンテンツのみを表示するにはどうすればよいですか? (更新された質問)

更新: 次の戦略が解決策になる可能性がありますが、よりクリーンな方法があることを願っています: 常にSheet1のコンテンツの上に新しいデータを追加limit 3してから、クエリに追加します。

サンドボックスはこちら: https://docs.google.com/spreadsheet/ccc?key=0As_Zg0RxlMgXdFR2M3RpT05MX01tSlRKR0RrTXlFb0E&usp=sharing

4

1 に答える 1

2

eaposztrof、chopi、kurczę

QUERY+LIMITは、最新の行が最初の場合にのみトリックを実行します。

ただし、最新の行が一番下にQUERYある場合は、適切に使用すれば解決策がうまくいきますOFFSET。まだOFFSETシーケンス/日付識別子のないデータで使用するには、コンテンツの行を数え、最後の行が最新であると想定する必要があります。これにより、使用が強制されますFILTER- 別のクエリのようなもの。

元のデータシートにタイムスタンプを追加することを検討し、単一の FILTER / SORT 式を使用してください。今のところ、必要に応じてデータが表示されます。

QUERY(Sheet1!$A:$B;"select B where A like '%"&A1&"%' offset "&(COUNT(FILTER(Sheet1!$B2:$B;Sheet1!$A2:$A=A1))-3);0)

トリックは、最初の X 行をバイパスoffsetする Google クエリ言語 ( https://developers.google.com/chart/interactive/docs/querylanguage#Offset ) の句を使用することです。オフセットを計算することで、最後の 3 行を取得できます。タイムスタンプまたは ID がないため、一番下の行が最新であり、最初の行を無視したいと仮定します。

  1. 条件に一致する行をカウントするCOUNT(FILTER(Sheet1!$B2:$B;Sheet1!$A2:$A=A1))(QUERY内のこのFILTERは好きではない-効率的ではない)

  2. 「3」を減算してオフセットを取得します (そのため-3COUNT.

最も効率的な解決策は、同じように使用する関数を使用して独自のスクリプトを作成すること=myfunctionです (残念ながら、.setValues を使用してスクリプトを許可するには、この関数をイベントまたは上部のメニュー バーに追加する必要がありますが、これは別の話です)。

于 2013-09-27T09:51:21.260 に答える