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

Forumthread: Zeile (string) nach " " suchen und wort ausgeben

Zeile (string) nach " " suchen und wort ausgeben
02.01.2017 19:01:58
michael
Hallo zusammen,
ich möchte gerne in einer Zeile aus einer Textdatei, welche ich in vba in eine Variable übergebe (Line Input #1, varInhalt), nach "Wort" suchen.
Nochmal genauer: In den Zeilen die ich durchsuchen will, kommt es jeweils genau einmal vor, dass ein Wort in Anführungszeichen steht. Der Satzbau dieser Zeile kann sich komplett unterscheiden, allerdings ist sichergestellt, dass die "-Zeichen genau zweimal vorkommen. Ich möchte nun diesen Textabschnitt bzw. dieses Wort, welches zwischen den beiden "-Zeichen steht, in eine Variable lesen.
Hat jemand eine Idee wie ich das realisieren kann?
Vielen Dank im voraus.
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Zeile (string) nach " " suchen und wort ausgeben
02.01.2017 19:08:48
Hajo_Zi
Prüfen kannst Du mit Instr()

AW: Zeile (string) nach " " suchen und wort ausgeben
02.01.2017 19:44:21
Daniel
Hi
du kannst das wort zwischen den beiden "" mit der Split-Funktion auslesen:
varWort = Split(varInhalt, chr(34))(1)
wenn noch geprüft werden muss, ob die Anführungszeichen auch vorhanden sind:
if varInhalt like "*""*""*" then varWort = Split(varInhalt, chr(34))(1)
Gruß Daniel
Anzeige
AW: Zeile (string) nach " " suchen und wort ausgeben
02.01.2017 19:48:51
michael
Vielen Dank euch beiden.
Split-Funktion sieht einfach aus, habs jetzt aber auch mit der instr() gebaut.
Ergebniss funktioniert:
Function cut_parameter(phrase As Variant) As String
Dim first As Integer
Dim second As Integer
cut_parameter = ""
first = InStr(1, phrase, """")
second = InStr(first + 1, phrase, """")
diff = second - first - 1
cut_parameter = Mid(phrase, first + 1, diff)
End Function

Anzeige
Das kann man auch...
02.01.2017 20:02:22
Case
Hallo Michael, :-)
... umgehen: ;-)
Workbooks.Add xlWBATWorksheet
Siehe:
Workbooks.Add-Methode (Excel)...
Servus
Case

Anzeige
Sorry, habe es an den Falschen...
02.01.2017 20:05:59
Case
Hallo, :-)
... Strang angehängt. Gehört eins weiter runter. :-(
Servus
Case

Anzeige
Anzeige

Infobox / Tutorial

Zeile nach " " suchen und Wort ausgeben in Excel VBA


Schritt-für-Schritt-Anleitung

Um ein Wort zwischen zwei Anführungszeichen in einer Zeile zu extrahieren, kannst Du die Split-Funktion oder die InStr-Funktion in VBA verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsm)" und wähle "Einfügen" > "Modul".
  3. Füge den folgenden Code ein:

    Function cut_parameter(phrase As Variant) As String
       Dim first As Integer
       Dim second As Integer
       cut_parameter = ""
       first = InStr(1, phrase, """")
       second = InStr(first + 1, phrase, """")
       If first > 0 And second > first Then
           Dim diff As Integer
           diff = second - first - 1
           cut_parameter = Mid(phrase, first + 1, diff)
       End If
    End Function
  4. Verwende die Funktion:

    • Du kannst die Funktion cut_parameter in einer Excel-Zelle aufrufen, indem Du z.B. =cut_parameter(A1) eingibst, wobei A1 die Zelle ist, die den Text enthält.

Häufige Fehler und Lösungen

  • Fehler: "Typen unverträglich"

    • Lösung: Stelle sicher, dass der übergebene Wert an die Funktion vom Typ String ist.
  • Fehler: Funktion gibt einen leeren Wert zurück

    • Lösung: Überprüfe, ob die Anführungszeichen im Text tatsächlich vorhanden sind. Nutze die InStr-Funktion, um das Vorhandensein der Anführungszeichen zu testen.

Alternative Methoden

Eine alternative Methode zur Extraktion des Wortes könnte die Verwendung von regulären Ausdrücken (RegEx) sein. Hier ist ein Beispiel, wie Du dies in VBA umsetzen kannst:

Function extractWordWithRegEx(ByVal text As String) As String
    Dim regEx As Object
    Set regEx = CreateObject("VBScript.RegExp")
    regEx.Pattern = """(.*?)"""
    regEx.Global = False

    If regEx.Test(text) Then
        extractWordWithRegEx = regEx.Execute(text)(0).SubMatches(0)
    Else
        extractWordWithRegEx = ""
    End If
End Function

Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du die oben genannten Funktionen anwenden kannst:

  1. Beispiel mit cut_parameter:

    • Wenn in Zelle A1 der Text Das ist ein "Test" steht, gibt =cut_parameter(A1) den Wert Test zurück.
  2. Beispiel mit extractWordWithRegEx:

    • Bei Verwendung von =extractWordWithRegEx(A1) wird das gleiche Ergebnis erzielt: Test.

Tipps für Profis

  • Verwende die Split-Funktion für einfache und schnelle Ergebnisse, wenn Du genau weißt, dass das Wort zwischen zwei Anführungszeichen steht.
  • Nutze reguläre Ausdrücke, wenn Du komplexere Textmuster extrahieren möchtest.
  • Teste Deine Funktionen gründlich, um sicherzustellen, dass sie auch mit unerwarteten Eingaben umgehen können.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Funktion nur funktioniert, wenn Anführungszeichen vorhanden sind? Die Verwendung der InStr-Funktion ist eine gute Methode, um zu überprüfen, ob die Anführungszeichen vorhanden sind, bevor Du die Extraktion vornimmst.

2. Funktioniert dieser Code in allen Excel-Versionen? Ja, die vorgestellten Funktionen sind mit VBA in den meisten Excel-Versionen kompatibel, insbesondere in Excel 2010 und später. Achte darauf, dass Du die Makros aktiviert hast.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige