Google Sheets借助QUERY函数按A列条件取对应列最后非空值
适配动态数据的分组取最后非空值解决方案
以下方案支持IMPORTRANGE导入的动态增长数据,完全保留A列原始出现顺序,不需要手动调整范围:
通用全量输出公式(单公式输出所有分组结果)
这个写法不需要辅助列,自动适配新增数据:
=SORT( SORTN( {A2:B,ROW(A2:B)}, 9^9, 2, 1, FALSE ), 3, TRUE )
公式逻辑说明
- 给每行追加原始行号作为第三列,用于最终还原顺序
- 先按A列升序、行号降序排序,让每个A分组的最后一行排在该组最前面
- 用
SORTN按A列去重,每个分组仅保留排在最前的行,也就是该组B列最后一个非空值对应的行 - 最后按原始行号升序排序,还原A列的原始出现顺序
QUERY实现方案
如果必须使用QUERY函数实现,可使用以下写法:
=QUERY( {A2:B,ROW(A2:B)}, "select Col1,Col2 where Col2 is not null group by Col1,Col2 having Col3 = max(Col3) order by max(Col3) asc", 0 )
单值匹配公式(匹配D列单个分组值查询)
如果你需要像原来的INDEX公式一样,匹配D列的单个分组值取对应结果:=QUERY(A:B,"select B where A = '"&D2&"' and B is not null order by ROW(A) desc limit 1",0)
注意事项
- 所有公式中的范围
A2:B可以直接替换为你的IMPORTRANGE返回范围,无需手动调整行号,新增数据会自动更新 - 不需要提前对A列做排序操作,完全保留A列元素的原始出现顺序
内容的提问来源于stack exchange,提问作者Lore456
相关产品推荐
相关产品推荐

