Excel中查找A列数字序列缺失值的公式需求
嘿,刚好碰到过类似的需求,给你两个实用的Excel公式方案,分版本适配:
方案1:Excel 365/2021 动态数组公式(最简便)
如果你用的是支持动态数组的Excel版本,直接用这个公式就能自动溢出所有缺失数字,不用手动下拉:
=FILTER(SEQUENCE(MAX(A:A)-MIN(A:A)+1,MIN(A:A)),ISNA(MATCH(SEQUENCE(MAX(A:A)-MIN(A:A)+1,MIN(A:A)),A:A,0)))
拆解下公式逻辑:
SEQUENCE(MAX(A:A)-MIN(A:A)+1,MIN(A:A)):生成从A列最小值到最大值的完整连续数字序列(比如你的例子里就是1到13)MATCH(SEQUENCE(...),A:A,0):检查连续序列里的每个数字是否在A列存在,不存在的会返回#N/AISNA(...):把#N/A转换成TRUE,存在的数字转换成FALSEFILTER(...):筛选出连续序列中标记为TRUE的数字,也就是那些缺失的数
用你给的例子测试,这个公式会直接输出4、5、6、9、10,完美匹配需求。
方案2:老版本Excel(无动态数组)的数组公式
如果是不支持动态数组的老版本Excel,用这个数组公式(输入完要按Ctrl+Shift+Enter触发数组计算),在B1单元格输入后下拉即可:
=IFERROR(SMALL(IF(ISNA(MATCH(ROW(INDIRECT(MIN(A:A)&":"&MAX(A:A))),A:A,0)),ROW(INDIRECT(MIN(A:A)&":"&MAX(A:A)))),ROW(A1)),"")
公式逻辑说明:
ROW(INDIRECT(MIN(A:A)&":"&MAX(A:A))):生成从A列最小值到最大值的连续数字序列MATCH(...):检查每个数字是否在A列,不在的返回#N/AIF(ISNA(...),...):只保留缺失的数字,过滤掉已存在的SMALL(...,ROW(A1)):依次提取第1、第2...个缺失数字,下拉时ROW(A1)会自动变成ROW(A2)、ROW(A3),对应提取下一个缺失值IFERROR(...):当没有更多缺失数字时,单元格显示空值,避免出现错误提示
内容的提问来源于stack exchange,提问作者balaji




