You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Google Sheets公式以返回相同ID的最后输入条目?

问题与解决方案

原始数据

ID体重(kg)BMI体脂率内脏脂肪
24854.120.519.77
24854.320.219.56
24854.220.419.66

初始使用公式

=ARRAYFORMULA(IF(LEN(I3:I), IFERROR(VLOOKUP(I3:I, SORT(FILTER({B3:B, D3:D, E3:E, F3:F, G3:G}, LEN(B3:B)), 1, FALSE), {2, 3, 4, 5}, FALSE), ""), ""))

当前返回结果

ID体重(kg)BMI体脂率内脏脂肪
24854.120.519.77

由于所有条目ID相同,调整公式中SORT(...,1,TRUE)的排序方向参数无法改变返回结果。

尝试的MAX函数公式

=ARRAYFORMULA(IF(LEN(I3:I), IFERROR(VLOOKUP(I3:I, FILTER({B3:B, D3:D, E3:E, F3:F, G3:G}, ROW(B3:B) = MAX(FILTER(ROW(B3:B), B3:B = I3:I))), {2, 3, 4, 5}, FALSE), ""), ""))

该公式仅返回全局行号最大的条目,无法针对每个ID匹配其对应最大行号的记录。

目标结果

需返回ID对应的最后一条(行号最大)的记录:

ID体重(kg)BMI体脂率内脏脂肪
24854.220.419.66

可行解决方案

方法1:使用QUERY函数实现

=ARRAYFORMULA(IF(LEN(I3:I), IFERROR(QUERY({B3:B, ROW(B3:B), D3:G}, "select Col1, Col3, Col4, Col5, Col6 where Col1 = '"&I3:I&"' order by Col2 desc limit 1", 0), ""), ""))

逻辑说明:给原始数据附加行号列,按行号降序排序后,取每组ID的第一条记录,即为该ID对应的最后一条数据。

方法2:改进VLOOKUP数组公式

=ARRAYFORMULA(IF(LEN(I3:I), IFERROR(VLOOKUP(I3:I&MAX(ROW(B3:B)*(B3:B=I3:I)), {B3:B&ROW(B3:B), D3:G}, {2,3,4,5}, 0), ""), ""))

逻辑说明:将ID与对应行号拼接成唯一匹配键,通过VLOOKUP定位ID+最大行号的组合,从而精准获取目标记录。

内容的提问来源于stack exchange,提问作者Ricardo Wu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 19:31:00