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 的col A 标签为 name ,col B 标签为 height
名称有不同数量的数据,这就是我想仅列出最新数据的原因。 所以: 如何在不分类数据的情况下减少 A2 的查询以仅显示最后3个内容?(更新后的问题)
更新:
以下策略可以解决,希望有更多干净的方法可以做:
始终在 Sheet1 的内容上方添加新数据,然后将limit 3
添加到查询中。
这是沙箱:https://docs.google.com/spreadsheet/ccc?key=0As_Zg0RxlMgXdFR2M3RpT05MX01tSlRKR0RrTXlFb0E&usp=sharing
答案 0 :(得分:2)
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)
诀窍是使用Google查询语言(https://developers.google.com/chart/interactive/docs/querylanguage#Offset)中的offset
子句,该子句首先评估X行。我们可以通过计算偏移来获得最后3行。由于您没有时间戳或ID,因此假设底行是最新的,您想忽略起始行:
计算匹配条件COUNT(FILTER(Sheet1!$B2:$B;Sheet1!$A2:$A=A1))
的行(我在QUERY中的这个过滤器我不喜欢 - 效率不高)
减去“3”以获得偏移(这就是-3
之后硬编码COUNT
的原因。
最有效的解决方案是编写自己的脚本,其功能与=myfunction
相似(不幸的是,要使用.setValues脚本允许此功能需要添加到某个事件或上层菜单栏,但这是单独的故事)。