求助:如何用Excel函数按条件查找最近的过往日期?
如何用Excel函数获取每条记录的最近过往日期?
样本数据
| Date(日期) | Vendor(供应商) | Func(功能) | Name(名称) |
|---|---|---|---|
| 1/1/2023 | A | 1 | AB |
| 1/1/2023 | A | 2 | AC |
| 1/1/2023 | B | 3 | AD |
| 1/2/2023 | A | 1 | AB |
| 1/2/2023 | A | 2 | AC |
| 1/2/2023 | B | 3 | AD |
| 1/4/2023 | A | 1 | AB |
| 1/4/2023 | A | 2 | AC |
| 1/4/2023 | B | 3 | AD |
| 1/5/2023 | A | 1 | AB |
| 1/5/2023 | A | 2 | AC |
| 1/5/2023 | B | 3 | AD |
期望输出
| Date(日期) | Vendor(供应商) | Func(功能) | Name(名称) | Recent_Date(最近过往日期) |
|---|---|---|---|---|
| 1/1/2023 | A | 1 | AB | Null |
| 1/1/2023 | A | 2 | AC | Null |
| 1/1/2023 | B | 3 | AD | Null |
| 1/2/2023 | A | 1 | AB | 1/1/2023 |
| 1/2/2023 | A | 2 | AC | 1/1/2023 |
| 1/2/2023 | B | 3 | AD | 1/1/2023 |
| 1/4/2023 | A | 1 | AB | 1/2/2023 |
| 1/4/2023 | A | 2 | AC | 1/2/2023 |
| 1/4/2023 | B | 3 | AD | 1/2/2023 |
| 1/5/2023 | A | 1 | AB | 1/4/2023 |
| 1/5/2023 | A | 2 | AC | 1/4/2023 |
| 1/5/2023 | B | 3 | AD | 1/4/2023 |
规则说明
- 行的唯一标识为
Date+Func组合 - 最早日期(1/1/2023)无更早对应记录,返回
Null - 后续日期返回同一Func下最近的更早日期
解决方案
方法1:MAXIFS函数(兼容多数Excel版本)
假设数据位于A2:D13区域,在E2单元格输入以下公式,下拉填充至整列:
=IFERROR(MAXIFS($A$2:$A$13,$A$2:$A$13,"<"&A2,$C$2:$C$13,C2),"Null")
MAXIFS:筛选同一Func下日期小于当前行的最大(最近)日期IFERROR:无符合条件的日期时返回Null
方法2:XLOOKUP+动态数组(Excel 365/2021及以上)
在E2单元格输入以下公式,按回车后自动填充整列:
=BYROW(A2:C13,LAMBDA(x,LET(current_date,INDEX(x,1),current_func,INDEX(x,3),prev_dates,FILTER(A$2:A$13,(A$2:A$13<current_date)*(C$2:C$13=current_func),""),IF(COUNTA(prev_dates)=0,"Null",MAX(prev_dates)))))
BYROW:遍历每一行数据LET:定义变量简化逻辑,提取当前行的日期和FuncFILTER:筛选同一Func下的更早日期,无结果时返回空值- 最终判断:无过往日期返回
Null,否则取最近日期
注意事项
- 确保A列是Excel可识别的日期格式(而非文本)
- 如需返回空白而非
Null文本,将公式中的"Null"替换为""
内容的提问来源于stack exchange,提问作者pooja
相关产品推荐
相关产品推荐

