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

Excel 2016:在一列中查找5000到6000之间缺失的数字,excel,textjoin,Excel,Textjoin,我有一列(a),数字从5000到6000。现在,一些数字丢失了。例如,下面的列中缺少编号5004 5000 5001 5002 5003 5005 5006 … 6000 因此,缺少编号5004。如何找到丢失的所有数字?如果需要多个数字,请将其放在第一个单元格中,然后复制/向下拖动: =IFERROR(AGGREGATE(15,6,ROW(INDIRECT("5000:6000"))/(ISERROR(MATCH(ROW(INDIRECT("5000:6000")),A:A,0))),ROW(1

我有一列(a),数字从5000到6000。现在,一些数字丢失了。例如,下面的列中缺少编号5004

  • 5000
  • 5001
  • 5002
  • 5003
  • 5005
  • 5006
  • 6000

  • 因此,缺少编号
    5004
    。如何找到丢失的所有数字?

    如果需要多个数字,请将其放在第一个单元格中,然后复制/向下拖动:

    =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
    
    函数TEXTJOIN(delim作为字符串,skipblank作为布尔值,arr)
    长得一样暗
    尺寸c与长度相同
    Dim arr2()
    调暗t的长度,y的长度
    t=-1
    y=-1
    如果TypeName(arr)=“范围”,则
    arr2=arr.值
    其他的
    arr2=arr
    如果结束
    出错时继续下一步
    t=UBound(arr2,2)
    y=UBound(arr2,1)
    错误转到0
    如果t>=0且y>=0,则
    对于c=LBound(arr2,1)到UBound(arr2,1)
    对于d=LBound(arr2,1)到UBound(arr2,2)
    如果arr2(c,d)“”或不是skipblank,则
    TEXTJOIN=TEXTJOIN&arr2(c,d)&delim
    如果结束
    下一个d
    下一个c
    其他的
    对于c=LBound(arr2)到UBound(arr2)
    如果arr2(c)“”或不是skipblank,则
    TEXTJOIN=TEXTJOIN&arr2(c)&delim
    如果结束
    下一个c
    如果结束
    TEXTJOIN=Left(TEXTJOIN,Len(TEXTJOIN)-Len(delim))
    端函数
    
    您使用的是什么excel?你想要一个单元格还是多个单元格的输出?你好,斯科特。我正在使用Excel 2016。在一个或多个牢房里,随便你。也许两者都可以。没关系,效果很好!第一个解决方案非常完美,因为我没有Office 365 Excel。感谢you@JustMe我意识到这一点,但只是为后面的人添加了其他部分。顺便问一下,斯科特,你能告诉我如何在不向下滚动的情况下,从列中计算包含特定字符串/或数字的单元格数吗?在Excel中,它
    =计数(A1:A500)