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

Google Sheets中Vlookup+Filter+Sort+ArrayFormula替代方案求助

替代方案

方案1:使用XLOOKUP+BYROW组合

在RECORDS表的C1单元格输入以下公式(建议用具体数据范围如E2:G代替整列E:G,避免表头干扰):

=ARRAYFORMULA(IF(A2:A="",,BYROW(A2:A&"|"&B2:B,LAMBDA(x,LET(
  type, LEFT(x, FIND("|", x)-1),
  entry_date, VALUE(RIGHT(x, LEN(x)-FIND("|", x))),
  XLOOKUP(1, (E2:E=type)*(G2:G<=entry_date), F2:F,, 0, -1)
)))))

逻辑说明:

  • ARRAYFORMULA 触发整列自动计算,适配后续新增行
  • IF(A2:A="",,) 跳过空行,避免无效计算和错误值
  • BYROW 逐行处理每行的Type和Entry Date(用|拼接后拆分,避免数据混淆)
  • XLOOKUP 的-1参数指定返回最后一个匹配项,也就是Entry Date之前最近的状态变更记录

方案2:使用QUERY+BYROW组合

如果更习惯用QUERY语法,可替换为:

=ARRAYFORMULA(IF(A2:A="",,BYROW(A2:A&"|"&B2:B,LAMBDA(x,LET(
  type, LEFT(x, FIND("|", x)-1),
  entry_date, VALUE(RIGHT(x, LEN(x)-FIND("|", x))),
  INDEX(QUERY(E2:G,"select F where E='"&type&"' and G <= date '"&TEXT(entry_date,"yyyy-mm-dd")&"' order by G desc limit 1"),1)
)))))

逻辑说明:

  • QUERY 筛选对应Type且变更日期≤Entry Date的记录,按变更日期降序排序后取第一条(最近状态)
  • INDEX 提取QUERY返回的结果值

注意事项

  • 确保TYPES表的G列(变更日期)和RECORDS表的B列(Entry Date)均为标准日期格式
  • 如果Type中包含|,可替换为其他无冲突字符(如^)进行拼接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 06:53:22