计数缺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