AW: Lücken in Zahlenreihe finden
13.05.2018 22:55:17
Daniel
Hi
der Code den du da gefunden hast, funktioniert nicht richtig.
Er versagt, wenn die Lücken größer sind und braucht auch sortierte Daten (bspw wird dir 109 als fehlend ausgegeben, obwohl der Wert vorhanden ist.
probier mal diesen Code für unsortierte Daten:
Sub LueckenFinden1()
'--- Liste darf unsortiert sein
Dim x As Long
Dim erg As String
With WorksheetFunction
For x = .Min(Columns(2)) + 1 To .Max(Columns(2)) - 1
If .CountIf(Columns(2), x) = 0 Then
erg = erg & ", " & x
End If
Next
End With
If erg "" Then MsgBox Mid(erg, 3)
End Sub
Wenn du die Liste nach den Auftragsnummern aufsteigend sortierst, kannst du auch einen der beiden folgenden Codes verwenden.
Diese sind bei größeren Datenmengen etwas schneller, brauchen aber wie gesagt, sortierte Daten (dh sollten dann eingesetzt werden, wenn das erste Makro spürbar langsam ist)
Sub LueckenFinden2()
Dim x As Long
Dim erg As String
'--- Liste muss aufsteigend sortiert sein
With WorksheetFunction
For x = .Min(Columns(2)) + 1 To .Max(Columns(2)) - 1
If .VLookup(x, Columns(2), 1, True) x Then
erg = erg & ", " & x
End If
Next
End With
If erg "" Then MsgBox Mid(erg, 3)
End Sub
Sub LueckenFinden3()
'--- Liste muss aufsteigend sortiert sein
Dim z As Long
Dim x As Long
Dim erg As String
For z = 3 To Cells(Rows.Count, 2).End(xlUp).Row
For x = Cells(z - 1, 2).Value + 1 To Cells(z, 2).Value - 1
erg = erg & ", " & x
Next
Next
If erg "" Then MsgBox Mid(erg, 3)
End Sub
Gruß Daniel