Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1620to1624
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Lücken in Zahlenreihe finden

Lücken in Zahlenreihe finden
13.05.2018 21:56:38
Dieter.G
Guten Abend,
das Makro in der angehängten Exceldatei habe ich bei meinen Recherchen im Internet gefunden.
https://www.herber.de/bbs/user/121584.xlsm
Das Makro durchsucht in > SpalteB ab Zeile2 Wie läßt sich diese Fehlermeldung unterdrücken?
Vielen Dank im Voraus!
Gruß
Dieter

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
On Error Resume Next
13.05.2018 22:01:43
KlausF
Hallo Dieter,
kurz und schmutzig:
Am Anfang des Codes ein
On Error Resume Next
und am Ende des Codes ein
On Error GoTo 0
setzen.
Gruß
Klaus
AW: Lücken in Zahlenreihe finden
13.05.2018 22:06:57
Matthias
Moin!
Probiere es mal so.
Sub LueckenFinden()
Dim lRow As Integer
Dim strFehlende As String
Dim i As Integer
lRow = Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To lRow - 1
If Cells(i + 1, 2)  Cells(i, 2) + 1 Then
strFehlende = strFehlende & CStr(Cells(i, 2) + 1) & ", "
End If
Next i
If strFehlende  "" Then strFehlende = Left(strFehlende, Len(strFehlende) - 2)
MsgBox "Folgende Nummern fehlen:" & vbCrLf & strFehlende
End Sub

Dabei wird der Ausgabestring auf leer geprüft und nur wenn ungleich leer, das Ende weggenommen. Da läuft bei dir der Fehler auf, da du len () -2 rechnest aber bei einer lückenlosen Liste keine Länge vorhanden ist. Alternativ kannst du auch am Anfang strFehlende = ", " deklarieren.
VG
Anzeige
AW: Lücken in Zahlenreihe finden
13.05.2018 22:43:02
Dieter.G
Klappt hervorragend!
Danke an Euch beide!
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
Anzeige

14 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige