如何突出显示并列出字母序列中的缺失值

时间:2017-01-11 02:46:36

标签: excel excel-vba excel-formula excel-2010 vba

我正在使用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

提前致谢。

1 个答案:

答案 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