2013-07-29 39 views
2

A1包含Sheet1中的一個查詢最後幾排

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

A2包含以下代碼的唯一調換數據:

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

工作表Sheet1有山坳一個與標籤名稱和col 與標籤高度

有不同量名稱的數據,這就是爲什麼我想只列出最新的數據。 這樣: 我怎樣才能減少A2的查詢只顯示最後3個內容,而不對數據進行排序?(更新問題)

UPDATE: 以下策略可以是一個解決方案,BU希望有更清潔的方式來做到: 隨時添加上述那麼Sheet1中的內容添加limit 3到查詢新的數據。

這裏是沙箱:https://docs.google.com/spreadsheet/ccc?key=0As_Zg0RxlMgXdFR2M3RpT05MX01tSlRKR0RrTXlFb0E&usp=sharing

+1

這似乎是一個非常簡單的'ORDER BY'和'LIMIT'子句的應用程序。如果您知道要分類的列,請點擊此處:https://developers.google.com/chart/interactive/docs/querylanguage – rutter

+0

不想使用ORDER BY,因爲人的身高不僅在增加。 – eapo

+0

如果「最後一行」的概念存在,您必須通過* something *進行排序,是的?它不一定是高度。也許這是一個時間戳或行號? – rutter

回答

2

eaposztrof,chopie,kurczę

QUERY + LIMIT會做的伎倆只有最近的排在最前面。

但是,如果最近一行在底部 - QUERY解決方案將適用於OFFSET使用。然而,使用數據OFFSET沒有任何順序/日期標識,你需要統計的內容行和承擔最後的是最新的。這種力量的FILTER用法 - 另一個查詢似的東西。

考慮添加時間戳原始數據表,並使用簡單的單過濾器/排序式。現在,這必須按要求顯示的數據:

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

訣竅是使用offset條款從谷歌查詢語言(https://developers.google.com/chart/interactive/docs/querylanguage#Offset),其中bypassess第X行。我們可以通過計算偏移量來得到最後3行。既然你沒有時間戳或ID,假設是最下面一行是最新的,你想無視開始行:

  1. 計數行匹配標準COUNT(FILTER(Sheet1!$B2:$B;Sheet1!$A2:$A=A1))(此過濾器內部QUERY我不喜歡 - 效率不高)

  2. 。減去「3」得到彌補(這就是爲什麼硬編碼-3COUNT

最有效的解決辦法是寫自己的腳本功能=myfunction類似的用法(不幸的是,有腳本。setValues允許此功能需要添加到某個事件或上層菜單欄,但這是單獨的故事)。