Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 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
Anzeige

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
;
Anzeige
Anzeige

Infobox / Tutorial

Lücken in einer Excel-Zahlenreihe finden


Schritt-für-Schritt-Anleitung

Um Lücken in einer Excel-Zahlenreihe zu finden, kannst du ein einfaches VBA-Makro verwenden. Folge diesen Schritten:

  1. Öffne Excel und erstelle eine neue Arbeitsmappe oder öffne eine bestehende.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Klicke auf Einfügen > Modul, um ein neues Modul hinzuzufügen.

  4. Füge den folgenden Code ein:

    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
  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Führe das Makro aus, indem du ALT + F8 drückst, das Makro auswählst und auf Ausführen klickst.

Damit findest du fehlende Zahlen in einer Liste, die in Spalte B ab Zeile 2 steht.


Häufige Fehler und Lösungen

  • Fehlermeldung beim Ausführen des Makros:

    • Lösung: Setze am Anfang des Codes On Error Resume Next und am Ende On Error GoTo 0, um Fehler zu ignorieren.
  • Makro findet nicht alle Lücken:

    • Lösung: Stelle sicher, dass die Zahlen in aufsteigender Reihenfolge sortiert sind, oder verwende den entsprechenden Code für unsortierte Daten.

Alternative Methoden

Wenn du die Excel-Funktionalitäten ohne VBA nutzen möchtest, gibt es auch andere Möglichkeiten:

  1. Bedingte Formatierung:

    • Verwende bedingte Formatierung, um Zellen hervorzuheben, die von den erwarteten Werten abweichen.
  2. Formeln:

    • Du kannst auch die WENN-Funktion in Kombination mit VERGLEICH verwenden, um fehlende Zahlen zu ermitteln.
    =WENN(ISTFEHLER(VERGLEICH(A1;B:B;0));A1;"")
  3. Pivot-Tabellen:

    • Nutze Pivot-Tabellen, um eine Übersicht über alle vorhandenen Zahlen zu erhalten und so Lücken zu identifizieren.

Praktische Beispiele

Hier sind einige Codes, die du verwenden kannst, um Lücken in einer Excel-Zahlenreihe zu finden:

  • Für unsortierte Daten:

    Sub LueckenFinden1()
       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
  • Für sortierte Daten:

    Sub LueckenFinden2()
       Dim x As Long
       Dim erg As String
       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

Tipps für Profis

  • Optimierung des Codes: Verwende Long anstelle von Integer für größere Datenmengen, um Überläufe zu vermeiden.
  • Benutzerdefinierte Funktionen: Erstelle eigene Funktionen, um die Suche nach fehlenden Zahlen zu automatisieren und einfacher in Excel zu verwenden.
  • Makros automatisieren: Setze das Makro so auf, dass es beim Öffnen der Datei oder regelmäßig ausgeführt wird, um immer die aktuellsten Lücken zu ermitteln.

FAQ: Häufige Fragen

1. Wie kann ich fehlende Nummern in einer Excel-Zahlenreihe finden? Du kannst dafür ein VBA-Makro verwenden, das durch die Zahlenreihe iteriert und nach Lücken sucht.

2. Funktioniert das auch für unsortierte Daten? Ja, es gibt spezielle VBA-Codes, die für unsortierte Daten geeignet sind, um Lücken zu identifizieren.

3. Kann ich das Makro in älteren Excel-Versionen verwenden? Ja, die vorgestellten VBA-Codes sind mit den meisten Excel-Versionen ab 2007 kompatibel. Achte darauf, dass die Makros aktiviert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige