我有一个很长的Excel列表(+ 10k行)和一个包含ordernumbers的列。 不幸的是,一些订单被删除了。
我的问题很简单,但实际上并没有实现:我想计算删除的行,基本上是缺少的顺序号。
暗示是一种暗示。 内切
答案 0 :(得分:3)
我不知道如何使用Excel代码执行此操作,但如果您转到底部并获取最后一个订单号,则可以计算应该使用的数量
last order number - first order number = expected amount
他们实际有多少人
last order index - first order index = actual amount
然后你可以做
expected amount - actual amount = missing order numbers
当然,这假设订单号之间没有空行,而您只需要执行一次。 (你可能需要一个函数或其他东西让你在更改电子表格时更新它)
答案 1 :(得分:2)
如果数字是连续的,那很容易。
按订单编号
排序在B4中计数
=(A4-A3)-1
B17中的总和
=SUM(B3:B16)
答案 2 :(得分:2)
这包括序列中缺少的空白行和数字(但是,如果删除了最小值/最大值,则无法检测到这一点)。它类似于@ shieldgenerator7的答案。
不需要排序。
=(MAX(A2:A26)-MIN(A2:A26)+1)-COUNTA(A2:A26)
答案 3 :(得分:2)
我将这些内容放在一起以识别缺失的数字,并可选择在新工作簿上打印列表。
您可以更改最小和最大数量,列表是否排序无关紧要。
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
答案 4 :(得分:2)
您现在可以使用名为 COUNTBLANK
的简单函数在 Excel 中计算空白。如果您知道结束行号(例如,如果数据在 A1
到 A10000
中),您可以使用以下公式:
=COUNTBLANK(A1:A10000)