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

INDEX(FILTER(SORT))函数失效,求Google Sheets数据匹配替代方案

解决方案

问题分析

你原公式的问题在于直接过滤掉了C列为空的记录,无法实现“先取最新条目,若C列空则回溯最近非空值”的逻辑——它会跳过所有空值直接找最新的非空记录,但实际需要从最新记录开始依次检查,找到第一个非空的C值。

修正公式

使用以下公式可以实现需求:

=IFERROR(INDEX(FILTER(SORT('VISIT LOG'!A:C, 'VISIT LOG'!B:B, FALSE), 'VISIT LOG'!A:A=A2), XMATCH(TRUE, INDEX(FILTER(SORT('VISIT LOG'!A:C, 'VISIT LOG'!B:B, FALSE), 'VISIT LOG'!A:A=A2),,3)<>"", 0), 3), "")

公式拆解

  • SORT('VISIT LOG'!A:C, 'VISIT LOG'!B:B, FALSE):将「VISIT LOG」的A-C列按B列日期降序排序,确保最新记录排在最前面。
  • FILTER(..., 'VISIT LOG'!A:A=A2):筛选出与当前行A列值匹配的所有记录,保留日期从新到旧的顺序。
  • INDEX(...,3)<>"":提取筛选结果中的C列,判断是否非空。
  • XMATCH(TRUE, ..., 0):找到筛选后C列中第一个非空值的位置。
  • INDEX(..., 3):根据找到的位置,提取对应的C列值。
  • IFERROR(..., ""):如果所有匹配记录的C列都为空,返回空值(可自行修改为提示文本)。

简化版公式(适用于Excel 365/2021)

利用动态数组特性,还可以用更简洁的写法:

=IFERROR(TAKE(FILTER(SORT('VISIT LOG'!C:C, 'VISIT LOG'!B:B, FALSE), 'VISIT LOG'!A:A=A2, ""), XMATCH(TRUE, FILTER(SORT('VISIT LOG'!C:C, 'VISIT LOG'!B:B, FALSE), 'VISIT LOG'!A:A=A2, "")<>"", 0)), "")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 07:15:29