Google Sheets技术提问:如何按最新巡检获取唯一设备ID并按状态分数降序排序
解决方案:提取设备最新巡检状态并降序排列
要实现「状态」工作表展示每台设备最新巡检的状态分数并按分数降序排列,核心是先筛选出每个设备最新时间戳对应的记录,再提取所需字段排序。以下是两种可行的Google Sheets公式方案:
方案一:嵌套QUERY分组取最新记录
通过QUERY子查询先获取每个设备的最新时间戳,再匹配对应记录:
=QUERY( '巡检'!A:Z, "SELECT D, Z WHERE A IN ( SELECT MAX(A) FROM '巡检'!A:Z GROUP BY D ) ORDER BY Z DESC", 1 )
- 内层
SELECT MAX(A) FROM '巡检'!A:Z GROUP BY D:按设备ID(D列)分组,计算每个设备的最新时间戳 - 外层查询筛选出时间戳属于上述最新值的行,提取设备ID(D列)和状态分数(Z列),最后按Z列降序排列
- 参数
1表示保留表头行
方案二:SORT+SORTN去重取最新记录
先按时间戳降序排序,再对设备ID去重保留第一条(最新)记录,最后排序:
=QUERY( SORTN( SORT('巡检'!A:Z, 1, FALSE), 9^9, 2, 4, TRUE ), "SELECT Col4, Col26 ORDER BY Col26 DESC", 1 )
SORT('巡检'!A:Z, 1, FALSE):将巡检表按时间戳(A列,第1列)降序排序,确保每个设备的最新记录排在最前SORTN(..., 9^9, 2, 4, TRUE):用模式2(去重模式),按设备ID(D列,第4列)去重,保留每个设备的第一条记录;9^9表示取足够多的行,TRUE表示按列升序去重(不影响结果,因为已按时间戳降序)- 外层QUERY提取设备ID(Col4)和状态分数(Col26,对应Z列),并按分数降序排列
如果表格中存在同一设备同一时间多条巡检记录的情况,方案二更稳妥,因为它直接保留排序后的第一条记录。
内容的提问来源于stack exchange,提问作者Brandon Boisvert
相关产品推荐
相关产品推荐

