【问题标题】:How to highlight and list missing values in a letter-number sequence如何突出显示和列出字母数字序列中的缺失值
【发布时间】:2017-05-25 17:06:21
【问题描述】:

我使用的是 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) 调用它时遇到了错误,我猜这是因为该函数无法解析序列开头的字母。

我的问题:我可以使用什么公式突出显示并单独列出第一列中的缺失值?

为额外说明,范围内的缺失值

C996
C998
C999
D101

……应该是……

C996
*C997*
C998
C999
*D100*
D101

提前致谢。

【问题讨论】:

    标签: excel excel-formula excel-2010 vba


    【解决方案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
    

    【讨论】:

    • 我怎么称呼这个?抱歉,今天是我第一次使用 Excel,边走边学。 :-)
    • 好的,我第一次尝试使用=MissingSequence(A1:A23400) 调用它,但失败并出现错误。然后我在Function 之前添加了Public,这似乎起到了作用——在最小化和最大化窗口的同时肯定有一些东西在运行,并且持续了大约20-30 秒。我真的很感激它运行成功的某种确认,特别是因为我不确定这个数据集是否有任何缺失的数字。
    • @Hashim - 确认使用debug.print MissingSequence 将结果打印到VBE 中的即时窗口。此外,请确保您传递了一个实际范围 A1:A23400 是一个字符串文字。我想你需要Range(A1:A23400)
    • 你的意思是在调用函数时使用debug.print?另外,在代码中使用 Range 会是什么样子?我应该把它放在哪里?
    • @Hashim - sMyString = MissingSequence(Range("A1:A23400")).. 然后是 debug.print sMyString。放置这是一个单独的过程然后运行。
    猜你喜欢
    • 2013-02-15
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 2020-07-27
    • 1970-01-01
    相关资源
    最近更新 更多