Excel 2016:在一列中查找5000到6000之间缺失的数字
我有一列(a),数字从5000到6000。现在,一些数字丢失了。例如,下面的列中缺少编号5004Excel 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
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)