计算丢失的行数

时间:2013-04-30 17:55:20

标签: excel vba excel-formula

我有一个很长的Excel列表(+ 10k行)和一个包含ordernumbers的列。 不幸的是,一些订单被删除了。

我的问题很简单,但实际上并没有实现:我想计算删除的行,基本上是缺少的顺序号。

暗示是一种暗示。 内切

5 个答案:

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

enter image description here

答案 2 :(得分:2)

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

不需要排序。

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

enter image description here

答案 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 中计算空白。如果您知道结束行号(例如,如果数据在 A1A10000 中),您可以使用以下公式:

=COUNTBLANK(A1:A10000)