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

使用反向MATCH匹配不存在值:Excel查找后续最小值≥99的日期

解决Excel中查找“最小值从此不再低于99”的日期问题

首先得搞明白你原来的公式为啥不对:你用的=INDEX(A:A,MATCH(99,B1:B12,-1))里,MATCH函数的第三个参数-1有个严格要求——它需要你的lookup_array(也就是B1:B12)必须是降序排列的,之后才会返回第一个大于等于查找值(99)的位置。但你的B列数据是波动的:300→200→100→90→300→200→100→50→90→100→110→120,根本不是降序结构,所以这个参数用在这里完全不匹配你的需求,返回的3月22日只是数据里第一个大于等于99的位置,而不是“从此之后都不低于99”的目标日期。

那要实现你的核心需求——按时间顺序找到之后所有B列值都不再低于99的最早日期——咱们可以用两种实用方法:

方法1:数组公式(适配新旧版Excel)

你可以用下面这个数组公式(旧版Excel输入后需按Ctrl+Shift+Enter确认,新版Excel直接回车即可):

=INDEX(A:A,MIN(IF(MMULT(--(OFFSET(B1:B12,ROW(B1:B12)-ROW(B1),0,ROWS(B1:B12)-ROW(B1:B12)+1)<99),ROW(B1:B12)^0)=0,ROW(B1:B12))))

简单说下原理:

  • OFFSET(...)会生成从当前行到最后一行的B列子区域;
  • --(区域<99)把小于99的值转成1,其余转成0;
  • MMULT(...)计算每个子区域里1的总和,总和为0就代表这个区域里没有小于99的值;
  • 最后用MIN锁定第一个满足条件的行号,再用INDEX取出对应的日期。

方法2:分步计算(更直观,适合新手)

如果觉得数组公式太绕,可以拆成分步操作:

  1. 新增一列(比如C列),在C1输入公式:
    =MIN(OFFSET(B1,0,0,ROWS(B$1:B$12)-ROW(B1)+1))
    
    下拉填充到C12,这个公式会计算从当前行到最后一行的B列最小值。
  2. 再用下面的公式找目标日期:
    =INDEX(A:A,MATCH(TRUE,C:C>=99,0))
    
    它会定位到C列中第一个“最小值≥99”的位置,对应的A列日期就是你要的结果。

用你的示例数据测试,两种方法都会返回2018年3月29日,完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:02:32