我正在使用Excel 2010.我有一列包含四位数序列的数据。这些序列由多个字母表组成并迭代,后跟100-999的数字。所以A100,A101,A102 ... A999,然后是B100,B101 ......直到Z999。这些序列有24,000个(即行)。
我首先尝试了以下VBA脚本:
Function MissingNumbers(Rng As Range) As String
Dim X As Long, MaxNum As Long
MaxNum = WorksheetFunction.Max(Rng)
ReDim Nums(1 To MaxNum)
For X = 1 To MaxNum
If Rng.Find(X, LookAt:=xlWhole) Is Nothing Then
MissingNumbers = MissingNumbers & ", " & X
End If
Next
MissingNumbers = Mid(MissingNumbers, 3)
End Function
...但是在使用=MissingNumbers(A1:A23400)
调用时遇到了错误,我猜测是因为该函数无法解析序列开头的字母。< / p>
我的问题:我可以使用什么公式来在我的第一列中突出显示并单独列出缺失值?
如需进一步说明,请忽略
范围内的值C996
C998
C999
D101
......会......
C996
*C997*
C998
C999
*D100*
D101
提前致谢。
答案 0 :(得分:1)
或许有更快的方法可以做到这一点......但这是经过测试并在小样本上产生的结果。
Function MissingSequence(Rng As Range) As String
Dim iCnt As Integer
For iCnt = 65 To 90 'ASCI characters for alphabet A-Z
Dim iNum As Integer
For iNum = 100 To 999
Dim sCheck As String
sCheck = Chr(iCnt) & iNum
If Rng.Find(sCheck, lookat:=xlWhole) Is Nothing Then
Dim sMissingNumbers As String
sMissingNumbers = sMissingNumbers & "," & sCheck
End If
Next
Next
MissingSequence = Mid(sMissingNumbers, 2)
End Function