Excel结合Max、Left函数筛选匹配今日日期序列号的单元格求最大值
Excel按日期序列号筛选取LEFT提取值最大值方案
核心需求
- 借助
LEFT函数提取目标列前2位数值 - 仅统计包含今日日期序列号(示例值为
44755)的单元格 - 返回符合条件的提取值的最大值,示例场景预期返回结果为12
- 现有可正常运行的全量最大值公式如下,需在不破坏原有逻辑的基础上增加筛选条件:
=AGGREGATE(14,6,--LEFT(Database!$H$1:INDEX(Database!$H:$H,MATCH("ZZZ",Database!$H:$H)),2),1)
该公式当前会返回全列提取值的最大值15,不符合筛选需求
可用修改后公式
直接利用AGGREGATE函数第二参数6可忽略错误值的特性,在数组计算环节加入匹配判断,不匹配的项转为错误值自动跳过即可:
=AGGREGATE(14,6,--LEFT(Database!$H$1:INDEX(Database!$H:$H,MATCH("ZZZ",Database!$H:$H)),2)/(ISNUMBER(SEARCH(TODAY(),Database!$H$1:INDEX(Database!$H:$H,MATCH("ZZZ",Database!$H:$H))))),1)
如果需要固定匹配指定序列号而非动态取今日日期,把公式里的TODAY()替换为目标序列号即可,比如匹配44755的写法:
=AGGREGATE(14,6,--LEFT(Database!$H$1:INDEX(Database!$H:$H,MATCH("ZZZ",Database!$H:$H)),2)/(ISNUMBER(SEARCH(44755,Database!$H$1:INDEX(Database!$H:$H,MATCH("ZZZ",Database!$H:$H))))),1)
逻辑说明
- 完全保留原公式动态定位H列最后一个非空文本单元格的范围逻辑,不会出现全列引用导致的计算卡顿
- 新增的
/(ISNUMBER(SEARCH(目标序列号, 单元格范围)))判断逻辑:- 单元格包含目标序列号时,
SEARCH返回序列号所在位置,ISNUMBER返回逻辑值TRUE(运算时等价于1),LEFT提取的数值除以1结果不变,参与后续最大值排序 - 单元格不包含目标序列号时,
ISNUMBER返回逻辑值FALSE(运算时等价于0),LEFT提取的数值除以0会返回#DIV/0!错误,被AGGREGATE自动忽略
- 单元格包含目标序列号时,
- 最终参数
14代表按从大到小排序,取第1位结果,即为符合筛选条件的提取值最大值
内容的提问来源于stack exchange,提问作者jalty
相关产品推荐
相关产品推荐

