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

Wert in Zeile suchen und Position bestimmen | Herbers Excel-Forum

Forumthread: Wert in Zeile suchen und Position bestimmen

Wert in Zeile suchen und Position bestimmen
03.02.2010 15:56:08
Peter

Liebes Forum
Wie kann ich in einer bestimmten Tabelle mit VBA die Zeile 1 absuchen und die Position bestimmen, in der
1) ein bestimmter String enthalten ist,
2) der Inhalt einem bestimmten String genau entspricht?
Ich möchte dies jeweils beim Verlassen einer bestimmten Tabelle bestimmen - mit Private Sub Worksheet_Deactivate()
Wer kann mir helfen?
Danke, Peter

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wert in Zeile suchen und Position bestimmen
03.02.2010 16:00:40
Hajo_Zi
Hallo Peter,
benutze Find. Analog zu dem Beispiel.
Set RaFound = .Range("A1:A" & LoLetzte).Find(sSearch, .Range("A" & LoLetzte), , xlWhole, xlByRows, xlNext)
If RaFound Is Nothing Then Exit Sub 'falls nicht gefunden wird Sub verlassen

Anzeige
AW: Wert in Zeile suchen und Position bestimmen
03.02.2010 16:19:38
Peter
Hallo Hajo
Ich habe versucht, daraus eine Funktion zu basteln. Klappt noch nicht (vgl. hochgeladene Datei).
Ich möchte je eine Funktion, die mir den Range liefert, wenn der String genau übereinstimmt und eine, wenn der String enthalten ist.
Danke für jede Hilfe.
Peter
https://www.herber.de/bbs/user/67734.xls
Anzeige
AW: Wert in Zeile suchen und Position bestimmen
03.02.2010 16:25:27
Hajo_Zi
Halo Peter,
im ersten Beitrag stan das Du in einer Zeile suchen willst, jetzt suchst Du in Spalte A.
Die Funktion soll meiner Meinung nach ein String zurückgeben und kein Range.
Ungetestet
Option Explicit
Public Function FFINDEN(sSearch As String) As String
Dim RaFound As Range
Dim LoLetzte As Long
LoLetzte = 26
With Sheets("Daten")
Set RaFound = .Range("A1:A" & LoLetzte).Find(sSearch, .Range("A" & LoLetzte), , xlWhole, _
xlByRows, xlNext)
If Not RaFound Is Nothing Then
FFINDEN = "String stimmt überein"
Else
FFINDEN = "String stimmt nicht überein"
End If
End With
End Function
Gruß Hajo
Anzeige
In Formeln könntest du mit VERGLEICH...
03.02.2010 17:50:32
Luc:-?
...mit (1) und ohne (2) Platzhalter * arbeiten, Peter...
Das kannst du natürlich auch in VBA nachbauen. Für eine Eigenbau-Fkt (udF), darum scheint's wohl zu gehen, kannst du diese Fkt als WorksheetFunction.Match("text", zellbereichvon:bis, 0) einsetzen. Das Arg1 "text" wäre im 1.Fall als "*text*" zu schreiben. Match gibt auf jeden Fall die Position innerhalb von Arg2 wieder, das unbedingt ein Vektor°, also nur aus 1 Zeile oder Spalte, sein muss. Wenn der Text nicht enthalten ist, wird F-Wert #NV (Fehler 2042 bzw xlErrNA) geliefert. Du erhältst also bei Durchlauf nach Fall 1 die lfdNr aller betroffenen Zellen und kannst danach zu Fall 2 genau diese Zellen durch einfachen Vgl [a=b] bzw mit IDENTISCH (WorksheetFunction.Exact) oder StrCompare (oder so ähnlich) auf absolute Textgleichheit prüfen.
Gruß Luc :-?
° Anderenfalls muss zeilen- oder spaltenweise zusammengefasst wdn, was die Regie aber nicht gerade leichter macht. Man kann natürlich auch ganz darauf verzichten, PgmZyklen verwenden und dabei die Zellinhalte unter Verwendung des Operators Like (in der VBE-Hilfe unter Operator zu finden) überprüfen...
Anzeige
;
Anzeige

Infobox / Tutorial

Wert in Zeile suchen und Position bestimmen


Schritt-für-Schritt-Anleitung

Um die Position eines Wertes in einer Zeile mit Excel VBA zu ermitteln, kannst du die Range.Find Methode verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne den Visual Basic for Applications (VBA) Editor (Alt + F11).

  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > "Einfügen" > "Modul").

  3. Kopiere den folgenden Code in das Modul:

    Option Explicit
    
    Public Function FFINDEN(sSearch As String) As String
       Dim RaFound As Range
       Dim LoLetzte As Long
       LoLetzte = 26  ' Anzahl der Zeilen, die durchsucht werden sollen
    
       With Sheets("Daten")
           Set RaFound = .Range("A1:A" & LoLetzte).Find(sSearch, , xlWhole, xlByRows, xlNext)
           If Not RaFound Is Nothing Then
               FFINDEN = "String stimmt überein"
           Else
               FFINDEN = "String stimmt nicht überein"
           End If
       End With
    End Function
  4. Ersetze "Daten" mit dem Namen des Blattes, das du durchsuchen möchtest.

  5. Nutze die Funktion FFINDEN in deiner Tabelle, um die Position eines Wertes zu ermitteln.


Häufige Fehler und Lösungen

  • Fehler: "Typ nicht übereinstimmend"

    • Überprüfe, ob der Suchbegriff als String übergeben wird.
  • Fehler: "Objektvariable oder With-Blockvariable nicht festgelegt"

    • Stelle sicher, dass das Arbeitsblatt, in dem du suchst, korrekt benannt ist.
  • Fehler: Nichts gefunden

    • Achte darauf, dass der gesuchte String exakt mit dem Inhalt der Zelle übereinstimmt, wenn du xlWhole verwendest.

Alternative Methoden

Neben VBA kannst du auch Excel-Funktionen verwenden, um die Position eines Wertes zu ermitteln:

  1. VERGLEICH-Funktion:

    =VERGLEICH("Suchtext"; A1:A26; 0)

    Diese Funktion gibt die Position des gesuchten Wertes zurück, wenn er in der angegebenen Range gefunden wird.

  2. IDENTISCH-Funktion: Diese Funktion kann verwendet werden, um die genaue Übereinstimmung zwischen zwei Strings zu prüfen.


Praktische Beispiele

  1. VBA-Beispiel: Stelle sicher, dass du die Funktion FFINDEN aufrufst, um zu testen, ob dein String in der angegebenen Zeile vorhanden ist:

    Sub TestFinden()
       MsgBox FFINDEN("MeinSuchtext")
    End Sub
  2. Excel-Formel: Du könntest die Formel in einer Zelle verwenden, um die Position eines Wertes zu ermitteln:

    =VERGLEICH("MeinSuchtext"; A1:A26; 0)

Tipps für Profis

  • Nutze die Range.Find Methode mit den richtigen Argumenten, um die Suche zu optimieren.
  • Verwende Platzhalter (*, ?), um flexibler bei der Suche zu sein.
  • Achte darauf, dass deine Daten gut strukturiert sind, um die Suche zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich den Suchbereich anpassen? Du kannst den Bereich in der Find Methode ändern, indem du den Range-Parameter anpasst, z.B. .Range("A1:A" & LoLetzte).

2. Was mache ich, wenn ich nur partielle Übereinstimmungen finden möchte? Verwende Platzhalter in deiner Suchanfrage, z.B. *Suchtext*, um partielle Übereinstimmungen zu finden.

3. Wie kann ich die Suche nach dem Verlassen eines Blattes automatisieren? Nutze das Worksheet_Deactivate Ereignis, um die Funktion beim Verlassen des Blattes auszuführen.

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