Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: per VBA bestimmte Zelle finden

per VBA bestimmte Zelle finden
Karsten
Hallo,
ich möchte per VBA in Spalte A die Zelle finden, welche 5 Zahlen aber auch evt. Text danach hat.
Z.B. bei
gdfgdf
dfgfd:
dfgd (Vors.), dfgd dgfdl
Am Innenhafen 8-10
47059 Duisburg
sollte die aktive Zelle auf "47059 Duisburg" gehen.
Vielleicht kann mir jemand mit einem entspr. Makro weiterhelfen.
Danke.
Gruß
Karsten
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: per VBA bestimmte Zelle finden
14.12.2011 11:29:10
Reinhard
Hallo Karsten,
Sub finde()
Dim Zei As Long, Z As Long
Zei = Cells(Rows.Count, 1).End(xlUp).Row
Do
Z = Z + 1
If Len(Left(Cells(Z, 1).Value, 5)) = 5 And IsNumeric(Left(Cells(Z, 1).Value, 5)) Then
Cells(Z, 1).Select
Exit Do
End If
Loop While Z 

Gruß
Reinhard
Anzeige
AW: per VBA bestimmte Zelle finden
14.12.2011 11:35:40
Karsten
Hallo Reinhard,
danke, aber dein Code läuft nur durch und findet nichts.
Ich habe mein Beispiel in Spalte A kopiert.
Irgendwas stimmt nicht.
Gruß
Karsten
nicht richtig
14.12.2011 11:38:56
Rudi
Hallo,
IsNumeric(Left(Cells(Z, 1).Value, 5))
IsNumeric("1.2.3") ergibt auch True.
If Cells(Z,1) Like "#####*" Then
Gruß
Rudi
Anzeige
AW: nicht richtig
14.12.2011 11:43:31
Karsten
Hallo Rudi,
so etwa. Es wird aber immer noch nichts gefunden.
Gruß
Karsten
Sub finde()
Dim Zei As Long, Z As Long
Zei = Cells(Rows.Count, 1).End(xlUp).Row
Do
Z = Z + 1
If Len(Left(Cells(Z, 1).Value, 5)) = 5 And Cells(Z, 1) Like "#####*" Then
Cells(Z, 1).Select
Exit Do
End If
Loop While Z 

Anzeige
so richtig
14.12.2011 11:46:41
Rudi
Hallo,
Sub finde()
Dim Zei As Long, Z As Long
Zei = Cells(Rows.Count, 1).End(xlUp).Row
For Z = 1 To Zei
If Cells(Z, 1) Like "#####*" Then
Cells(Z, 1).Select
Exit For
End If
Next
End Sub

@Reinhard: For Next läuft min. 10x schneller als Do Loop.
Gruß
Rudi
Anzeige
AW: so richtig
14.12.2011 11:50:53
Karsten
Hallo Rudi,
danke, klappt.
Gruß
Karsten
AW: so richtig
14.12.2011 11:53:15
Reinhard
@Rudi, ich bedanke mich für die Informationen :-)
@Karsten, alle drei Codevarianten funktionieren bei mir.
Hast du Leerzeichen vpr der PLZ?
Gruß
Reinhard
AW: so richtig
14.12.2011 12:52:16
Karsten
Hallo Reinhard,
ja, aber ich hatte nun Rudis genommen. Geht.
Gruß
Karsten
Anzeige
Nur 5-stellige Zahlen (PLZ) berücksichtigen
14.12.2011 14:24:13
NoNet
Hey @all,
ich würde auch nur auf 5-stellige Ziffernfolgen prüfen :
If Cells(Z,1)  Like "##### [!0-9]*" 
Damit sind dann solche Werte ausgeschlossen :
"123456", "7000000000 Menschen", "490000 Einwohner", "06071/344-43"
"65536 Zellen" wird dann aber natürlich doch noch gefunden, obwohl es eigentlich "65536 Limburg/Lahn" heißen müsste ;-))
Gruß, NoNet
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Bestimmte Zelle per VBA finden


Schritt-für-Schritt-Anleitung

Um eine bestimmte Zelle in Excel per VBA zu finden, folge diesen Schritten:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code in das Modul ein:

    Sub finde()
        Dim Zei As Long, Z As Long
        Zei = Cells(Rows.Count, 1).End(xlUp).Row
        For Z = 1 To Zei
            If Cells(Z, 1) Like "#####*" Then
                Cells(Z, 1).Select
                Exit For
            End If
        Next
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro aus, indem du ALT + F8 drückst, den Namen des Makros auswählst und auf Ausführen klickst.

Dieser Code sucht in Spalte A nach einer Zelle, die mit fünf Ziffern beginnt und anschließend Text enthält.


Häufige Fehler und Lösungen

  • Problem: Das Makro findet keine Zelle.

    • Lösung: Stelle sicher, dass die Zellen in Spalte A keine führenden Leerzeichen enthalten. Du kannst dies prüfen, indem du die Zellen in Excel markierst und auf Daten > Text in Spalten gehst, um Leerzeichen zu entfernen.
  • Problem: Das Makro läuft zu langsam.

    • Lösung: Verwende die For Next-Schleife anstelle von Do Loop, da sie in der Regel schneller ist.

Alternative Methoden

Eine alternative Methode, um eine Zelle mit einer bestimmten Zahl oder Text zu finden, ist die Verwendung von Excel-Formeln. Du kannst die Funktion SVERWEIS oder FILTER verwenden, um die gewünschten Daten zu extrahieren, wenn du keine VBA-Lösungen verwenden möchtest.


Praktische Beispiele

Hier sind einige Beispiele, wie du das Makro anpassen kannst:

  1. Finden einer Zelle mit 5 Ziffern, gefolgt von Text:

    If Cells(Z, 1) Like "#####*" Then
  2. Ausschluss von bestimmten Formaten, wie z.B. mehr als 5 Ziffern:

    If Cells(Z, 1) Like "##### [!0-9]*" Then

Diese Anpassungen helfen dir, spezifischere Suchkriterien zu definieren.


Tipps für Profis

  • Nutze die Option Explicit-Anweisung am Anfang deines Codes, um sicherzustellen, dass alle Variablen deklariert sind. Dies reduziert Fehler und verbessert die Lesbarkeit deines Codes.
  • Füge Kommentare zu deinem Code hinzu, um die Funktionsweise zu erläutern. Das ist besonders hilfreich, wenn du später den Code anpassen musst.

FAQ: Häufige Fragen

1. Funktioniert das Makro in allen Excel-Versionen? Ja, das Makro sollte in den meisten aktuellen Excel-Versionen funktionieren, die VBA unterstützen.

2. Wie kann ich das Makro anpassen, um mehr als nur 5 Ziffern zu finden? Du kannst die Bedingung in der If-Anweisung anpassen, um die Anzahl der Ziffern zu erhöhen oder spezifische Textmuster zu suchen.

3. Was ist der Unterschied zwischen Like und IsNumeric? Like wird verwendet, um Muster zu vergleichen, während IsNumeric überprüft, ob der Inhalt einer Zelle eine Zahl ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige