计数缺less的行

我有一个很长的excel列表(+ 10k行)和一个列号ordernumbers。 不幸的是,一些命令被删除。

我的问题很简单,但要实现可能性不是:我要计算删除的行,基本上是缺less的ordernumbers。

一个暗示是prepreiated。 内

如果这些数字是连续的,那么很简单。

按订单号sorting

在B4中计数

=(A4-A3)-1 

总和在B17

 =SUM(B3:B16) 

在这里输入图像说明

我不知道如何使用Excel代码来做到这一点,但如果你到底部,并得到最后一个订单号码,你可以计算应该有多less

 last order number - first order number = expected amount 

他们实际上会有多less

 last order index - first order index = actual amount 

那你可以做

 expected amount - actual amount = missing order numbers 

当然,这里假定订单号码之间没有空行,而且只需要做一次。 (当你改变电子表格时,你可能想要一个函数或其他东西来更新它)

这包括序列中缺less的空行和数字(但是,如果删除了最小/最大值,则无法检测到)。 这与@ shieldgenerator7的答案类似。

没有必要的sorting。

=(MAX(A2:A26)-MIN(A2:A26)+1)-COUNTA(A2:A26)

在这里输入图像说明

这里是我把它们放在一起,以确定缺失的数字,并可select在新的工作簿上打印列表。

您可以更改最小值和最大值,并且列表是否被sorting并不重要。

 Sub FindMissingNumbers() Dim lstRange As Range Dim r As Long Dim lowestNumber As Long Dim highestNumber As Long Dim missingNumbers() As Variant Dim m As Long Dim wbNew As Workbook '## Set this value to the lowest expected value in ordernumber' lowestNumber = 0 '## Set this value to your highest expected value in ordernumber' highestNumber = 100 'Assuming the order# are in column A, modify as needed:' Set lstRange = Range("A1", Range("A1048576").End(xlUp)) For r = lowestNumber To highestNumber '## Check to see if this number exists in the lstRange If IsError(Application.Match(r, lstRange, False)) Then '## Add this number to an array variable:' ReDim Preserve missingNumbers(m) missingNumbers(m) = r m = m + 1 End If Next If MsgBox("There were " & m & " missing order numbers" _ & vbNewLine & "Do you want to print these numbers?", vbYesNo) = vbYes Then Set wbNew = Workbooks.Add With wbNew.Sheets(1) ' For r = LBound(missingNumbers) To UBound(missingNumbers) ' .Range("A1").Offset(r, 0).Value = missingNumbers(r) ' Next .Range("A1").Resize(UBound(missingNumbers) + 1) = _ Application.WorksheetFunction.Transpose(missingNumbers) End With Else: End If End Sub