Excel 2016:在一列中查找5000到6000中丢失的数字

我有一个数字从5000到6000的列(A)。现在,有些数字不见了。 例如下面的列中缺less编号5004。

  1. 5000
  2. 5001
  3. 5002
  4. 5003
  5. 5005
  6. 5006
  7. ...
  8. 6000

所以, 5004号码丢失了。 我怎样才能find所有缺失的数字?

如果你想在很多,然后把这个在第一个单元格,并复制/下拉:

 =IFERROR(AGGREGATE(15,6,ROW(INDIRECT("5000:6000"))/(ISERROR(MATCH(ROW(INDIRECT("5000:6000")),A:A,0))),ROW(1:1)),"") 

在这里输入图像说明

如果您有Office 365 Excel,并且您想在一个单元格中使用此数组公式:

 =TEXTJOIN(",",TRUE,IF(ISERROR(MATCH(ROW(INDIRECT("5000:6000")),A:A,0)),ROW(INDIRECT("5000:6000")),"")) 

作为一个数组公式,在退出编辑模式时,需要使用Ctrl-Shift-Enter而不是Enter来确认。 如果正确完成,则Excel将在公式周围放置{}

![在这里输入图片描述


如果您没有Office 365 Excel,并且您仍然希望在一个单元格中,那么您将需要vba。

把这个UDF放在一个附加到工作簿的模块中,并使用上面描述的TEXTJOIN()公式。

 Function TEXTJOIN(delim As String, skipblank As Boolean, arr) Dim d As Long Dim c As Long Dim arr2() Dim t As Long, y As Long t = -1 y = -1 If TypeName(arr) = "Range" Then arr2 = arr.Value Else arr2 = arr End If On Error Resume Next t = UBound(arr2, 2) y = UBound(arr2, 1) On Error GoTo 0 If t >= 0 And y >= 0 Then For c = LBound(arr2, 1) To UBound(arr2, 1) For d = LBound(arr2, 1) To UBound(arr2, 2) If arr2(c, d) <> "" Or Not skipblank Then TEXTJOIN = TEXTJOIN & arr2(c, d) & delim End If Next d Next c Else For c = LBound(arr2) To UBound(arr2) If arr2(c) <> "" Or Not skipblank Then TEXTJOIN = TEXTJOIN & arr2(c) & delim End If Next c End If TEXTJOIN = Left(TEXTJOIN, Len(TEXTJOIN) - Len(delim)) End Function