You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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/A
  • ISNA(...):把#N/A转换成TRUE,存在的数字转换成FALSE
  • FILTER(...):筛选出连续序列中标记为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/A
  • IF(ISNA(...),...):只保留缺失的数字,过滤掉已存在的
  • SMALL(...,ROW(A1)):依次提取第1、第2...个缺失数字,下拉时ROW(A1)会自动变成ROW(A2)ROW(A3),对应提取下一个缺失值
  • IFERROR(...):当没有更多缺失数字时,单元格显示空值,避免出现错误提示

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

火山引擎 最新活动