Google Sheets多条件匹配ArrayFormula:查询小于等于指定日期的最近值
Google Sheets ArrayFormula 实现带近似匹配的类MAXIFS功能
可用公式
直接在目标列首行输入以下公式即可整列生效,无需下拉填充:
=ARRAYFORMULA(IF(LEN(A2:A), IFERROR(VLOOKUP(A2:A&TEXT(B2:B, "yyyyMMdd"), SORT({H2:H&TEXT(I2:I, "yyyyMMdd"), J2:J}, 1, TRUE), 2, TRUE),),))
实现逻辑
- 统一拼接规则:将目标表和源数据表的「姓名+日期」统一转为
姓名+8位年月日文本的格式,保证拼接后的字符串可按照日期逻辑正常排序,避免位数不匹配导致的排序错误 - 预处理源数据:用
SORT函数将源查找区域按拼接后的键升序排列,满足VLOOKUP近似匹配要求的「查找区域首列必须升序」的前提条件 - 近似匹配取值:将VLOOKUP最后一个参数设为
TRUE,会自动匹配小于等于当前查找值的最大键值,正好对应「最近的更早日期」的需求 - 异常处理:外层套
IFERROR处理无任何符合条件记录的场景,返回空值避免报错 - 整列生效:外层用
ARRAYFORMULA包裹,仅需输入一次即可对A列所有非空行自动计算
注意事项
需确保目标表日期列、源数据表日期列均为标准日期格式,而非文本格式,否则TEXT函数转换会失效,导致匹配错误。
内容的提问来源于stack exchange,提问作者DMac
相关产品推荐
相关产品推荐

