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

VBA Find bei Doppelungen

Forumthread: VBA Find bei Doppelungen

VBA Find bei Doppelungen
Shizoe89
Guten Tag liebe Gemeinde,
ich sitze gerade an einer Datenbankabfrage, bei der über eine Suche die passende Zeile in ein UserForm geladen werden soll. Dazu habe ich mittels der Find-Funktion die Zelle ausfindig gemacht, bei welcher der gesuchte Begriff zum ersten Mal vorkommt.
StrSearch = Abfrage.TextBox7.Value
On Error GoTo Error02
Set Zelle = Tabelle2.UsedRange.Find(StrSearch)
IntRow = Zelle.Row
Abfrage.TextBox8.Value = IntRow
On Error GoTo 0
Call FindData
Exit Sub
Error02: MsgBox "Kein Eintrag zu Ihrer Suche gefunden!", vbExclamation, "Fehler
Über FindData() werden die Daten aus der Zeile ausgelesen und in die einzelenen Boxen im UserForm geschrieben. Das klappt auch alles wunderbar.
Leider kommt es aber auch vor, dass bestimmte Strings doppelt in der Tabelle vorkommen. So kann der String "Berlin" zum Beispiel als Ort, aber auch als Straße (Berlin!er Straße" vorkommen. Weiterhin haben vielleicht zwei Einträge den selben Nachnamen. Gibt es eine Möglichkeit in der Tabelle sozusagen "weiterzusuchen" um nicht nur den ersten Treffer anzuzeigen, sollte dieser nicht der passende sein?
Ich danke euch schon mal.. :)
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA Find bei Doppelungen
16.05.2012 12:58:32
Beverly
Hi,
schau dir mal die VBA-Hilfe zum Stichwort Range.FindNext-Methode an.


AW: VBA Find bei Doppelungen
16.05.2012 13:33:34
Shizoe89
Hallo,
danke für den Tipp. Wenn ich es richtig verstehe, muss Findnext im selben Sub angewendet werden, ja? Also ist es praktisch nicht möglich das neue Ergebnis erst durch nochmaliges klicken auf "suchen" zu finden?
Ich dachte, dass es vielleicht dadurch geht, dass Excel den ersten Treffer selected und beim nächsten Klick nur ab dieser Zeile sucht. Geht das?
Anzeige
AW: VBA Find bei Doppelungen
16.05.2012 13:50:48
Beverly
Hi,
dann musst du eine Abfrage einbauen, ob weitergesucht werden soll - nach diesem Prinzip:
Sub zellinhalt_suchen()
Dim rngZelle As Range
Dim strSuchbegriff As String
Dim bytWeiter As Byte
strSuchbegriff = InputBox("Suchbegriff:")
If strSuchbegriff  "" Then
With ActiveSheet.UsedRange
Set rngZelle = .Find(strSuchbegriff, lookat:=xlWhole, LookIn:=xlValues)
If Not rngZelle Is Nothing Then
firstAddress = rngZelle.Address
Do
Application.Goto reference:=rngZelle
bytWeiter = MsgBox("Weiter suchen?", vbOKCancel)
If bytWeiter = 2 Then Exit Do
Set rngZelle = .FindNext(rngZelle)
Loop While Not rngZelle Is Nothing And rngZelle.Address  firstAddress
End If
End With
End If
Set rngZelle = Nothing
End Sub



Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

VBA Find bei Doppelungen in Excel effektiv nutzen


Schritt-für-Schritt-Anleitung

Um Doppelungen in Excel mit VBA zu finden, kannst Du die .Find-Methode in Kombination mit der FindNext-Methode verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Definiere den Suchbegriff: Zunächst musst Du den Begriff festlegen, nach dem Du suchen möchtest. Dies geschieht häufig über ein Eingabefeld.

    Dim strSuchbegriff As String
    strSuchbegriff = InputBox("Gib den Suchbegriff ein:")
  2. Setze die Range: Verwende UsedRange, um den gesamten benutzten Bereich der Arbeitsblattdaten zu durchsuchen.

    Set rngZelle = ActiveSheet.UsedRange.Find(strSuchbegriff, lookat:=xlWhole, LookIn:=xlValues)
  3. Implementiere die Schleife: Nutze eine Schleife, um durch alle Treffer zu iterieren, und gib einen Dialog aus, um zu fragen, ob Du weitersuchen möchtest.

    Do While Not rngZelle Is Nothing
       Application.Goto reference:=rngZelle
       If MsgBox("Weiter suchen?", vbOKCancel) = vbCancel Then Exit Do
       Set rngZelle = ActiveSheet.UsedRange.FindNext(rngZelle)
    Loop
  4. Behandle das Ergebnis: Stelle sicher, dass Du eine Möglichkeit hast, die gefundenen Ergebnisse zu verarbeiten oder anzuzeigen.


Häufige Fehler und Lösungen

  • Fehler: "Kein Eintrag zu Ihrer Suche gefunden!"

    • Lösung: Überprüfe, ob der Suchbegriff korrekt eingegeben wurde. Achte darauf, dass lookat und LookIn richtig gesetzt sind.
  • Fehler: .Find gibt nichts zurück

    • Lösung: Stelle sicher, dass die Range korrekt definiert ist. Verwende UsedRange, um sicherzustellen, dass Du den gesamten Datenbereich abdeckst.

Alternative Methoden

Neben der Verwendung von .Find und .FindNext gibt es auch andere Möglichkeiten, um Doppelungen in Excel zu finden:

  • Filterfunktion: Setze die Filterfunktion in Excel ein, um schnell nach doppelten Werten zu suchen.
  • Bedingte Formatierung: Nutze die bedingte Formatierung, um Duplikate optisch hervorzuheben.

Praktische Beispiele

Hier ist ein praktisches Beispiel für die Verwendung von VBA Find:

Sub SucheNachDoppelungen()
    Dim rngZelle As Range
    Dim strSuchbegriff As String
    strSuchbegriff = InputBox("Suchbegriff:")

    If strSuchbegriff <> "" Then
        With ActiveSheet.UsedRange
            Set rngZelle = .Find(strSuchbegriff, lookat:=xlWhole, LookIn:=xlValues)
            If Not rngZelle Is Nothing Then
                firstAddress = rngZelle.Address
                Do
                    Application.Goto reference:=rngZelle
                    If MsgBox("Weiter suchen?", vbOKCancel) = vbCancel Then Exit Do
                    Set rngZelle = .FindNext(rngZelle)
                Loop While Not rngZelle Is Nothing And rngZelle.Address <> firstAddress
            End If
        End With
    End If
End Sub

Tipps für Profis

  • Verwende Option Explicit: Das hilft, Fehler bei Variablen zu vermeiden.
  • Verwende FindWhat-Parameter: Achte darauf, den FindWhat-Parameter präzise zu definieren, um die Suche zu optimieren.
  • Nutze Error Handling: Implementiere Fehlerbehandlung, um unerwartete Situationen elegant zu lösen.

FAQ: Häufige Fragen

1. Wie kann ich die Suche auf einen bestimmten Bereich einschränken?
Du kannst die Suche auf einen bestimmten Bereich einschränken, indem Du Set rngZelle = Range("A1:A10").Find(...) verwendest.

2. Kann ich die Suche so gestalten, dass sie nicht zwischen Groß- und Kleinschreibung unterscheidet?
Ja, dafür kannst Du den MatchCase-Parameter auf False setzen, wie in Find("Suchbegriff", LookIn:=xlValues, MatchCase:=False).

3. Was ist der Unterschied zwischen .Find und .FindNext?
.Find sucht das erste Vorkommen des Suchbegriffs, während .FindNext das nächste Vorkommen nach dem ersten Treffer sucht.

4. Wie kann ich die Suche auf bestimmte Zellen oder Spalten beschränken?
Du kannst die Suche auf bestimmte Zellen oder Spalten beschränken, indem Du den Suchbereich beim Aufruf von .Find entsprechend anpasst.

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