長い Excel リスト (+10k 行) と注文番号の列があります。残念ながら、一部の注文は削除されました。
私の質問は単純ですが、おそらく達成することはできません。削除された行、基本的に欠落している注文番号を数えたいのです。
ヒントは捨てられます。遠藤
長い Excel リスト (+10k 行) と注文番号の列があります。残念ながら、一部の注文は削除されました。
私の質問は単純ですが、おそらく達成することはできません。削除された行、基本的に欠落している注文番号を数えたいのです。
ヒントは捨てられます。遠藤
これは、シーケンスから欠落している空白行と数字をカバーします (ただし、最小値/最大値が削除されている場合、これはそれを検出できません)。@shieldgenerator7の答えに似ています。
これにはソートは必要ありません。
編集: sheildgenerator7 が指摘したように、これは、すべての注文番号が連続していると想定していることを前提としています。
=(MAX(A2:A26)-MIN(A2:A26)+1)-COUNTA(A2:A26)
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 回だけ行う必要があることを前提としています。(スプレッドシートを変更すると、関数または何かが更新されるようにする必要があります)
これは、欠落している数字を特定し、必要に応じてリストを新しいワークブックに出力するためにまとめたものです。
最小数と最大数を変更でき、リストがソートされているかどうかは関係ありません。
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
数字が連続している場合は、非常に簡単です。
注文番号順
B4で数える
=(A4-A3)-1
B17 の合計
=SUM(B3:B16)