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

Forumthread: VBA Texte in Klammern auslesen

VBA Texte in Klammern auslesen
29.05.2024 13:50:07
Tom
Hallo,

bei der Suche nach einem Makro, was in Klammern gesetzte Textteile ausliest (in einer Zelle kann mehr als 1 Klammerinhalt enthalten sein), habe ich das unten stehende Makro gefunden, was grds. gut funktioniert.

Allerdings haben die Textteile in den Klammern bei mir unterschiedliche Längen. Ich habe es bisher nicht hinbekommen, das Makro so anzupassen, dass der Inhalt der Klammern unabhängig von der Länge ausgelesen wird.

Hat jemand eine Idee?

Viele Grüße
Tom


Sub ZahlenExtrahieren()

Dim LRow As Long
Dim i As Integer
Dim Start As Integer
Dim Anz As Integer
Dim rngZelle As Range
Dim myString As String

LRow = Cells(Rows.Count, 1).End(xlUp).Row
'Hier Bereich anpassen
For Each rngZelle In Range("B2:B" & LRow)
Anz = Len(rngZelle) - Len(Replace(rngZelle, "(", ""))
myString = ""
For i = 1 To Anz
Start = WorksheetFunction.Find("#", _
WorksheetFunction.Substitute(rngZelle, "(", "#", i))
myString = myString & Mid(rngZelle, Start + 1, 5) & ", "
Next i
rngZelle.Offset(0, 1) = myString
Next rngZelle

End Sub
Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Texte in Klammern auslesen
29.05.2024 13:56:14
daniel
Hi

mal ein Beispiel, wie du aus einem Text mit Klammern die Werte in den Klammern herauslesen kannst:

dim txt as string

dim arr

txt = "abc(hallo Welt)def(guten Tag)xyz"
txt = Replace(txt, ")", "(")
arr = split(txt, "(")

if ubound(arr)>=1 then Msgbox arr(1)
if ubound(arr)>=3 then Msgbox arr(3)


wenn du den Text an den Klammern in ein Array splittest, dann stehen die Klammerinhalte in jedem zweiten Index (also 1, 3, 5 usw, Startindex ist 0)
am Ubound des Arrays (größter vorhandener Index) kannst du ablesen, wieviele Klammern im Ursprungstext vorhanden waren.



Gruß Daniel
Anzeige
AW: VBA Texte in Klammern auslesen
29.05.2024 14:04:17
volti
Hallo Tom,

hier noch eine Variante. Die extrahierten Werte werden in einem Array zur weiteren Bearbeitung vorgehalten...
Code:


Sub TextExtrahieren() Dim sText As String, sArr() As String, i As Long sText = "Heute(15,6) ist (17)(25) Feitertag" sArr = (Split(sText, "(")) For i = 1 To UBound(sArr) sArr(i) = Left$(sArr(i), InStr(sArr(i) & ")", ")") - 1) Debug.Print sArr(i) Next i End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz
Anzeige
AW: VBA Texte in Klammern auslesen
29.05.2024 14:35:14
Onur
Sub test()

Dim txt, arr, i, cel, lz, myStr
lz = Cells(Rows.Count, 2).End(xlUp).Row
For Each cel In Range("B2:B" & lz)
myStr = ""
cel.Value = Replace(cel, "(", ")")
arr = Split(cel, ")")
For i = 1 To UBound(arr) Step 2
myStr = myStr & arr(i)
Next i
cel.Offset(0, 1) = myStr
Next
End Sub
Anzeige
AW: VBA Texte in Klammern auslesen
29.05.2024 14:07:06
volti
Ein paar unnütze aber nicht schädliche Klammern noch entfernt.
Sub TextExtrahieren()

Dim sText As String, sArr() As String, i As Long

sText = "Heute(15,6) ist (17)(25) Feiertag"

sArr = Split(sText, "(")
For i = 1 To UBound(sArr)
sArr(i) = Left$(sArr(i), InStr(sArr(i) & ")", ")") - 1)
Debug.Print sArr(i)
Next i

End Sub
Anzeige
AW: VBA Texte in Klammern auslesen
29.05.2024 14:37:43
Tom
Hallo Daniel und Karl-Heinz,

vielen dank zunächst für eure Lösungsansätze. Mein posting vorhin war leider nicht ganz eindeutig, zur Verdeutlichung habe ich unten mal eine Beispieldatei beigefügt. Das bisherige Makro extrahiert die Klammerwerte in der Spalte C mit Kommata getrennt. Allerdings sieht man an den rot markierten Ziffern, dass bei fünfstelligen Ziffern falsch extrahiert wird.

Die einfachste Lösung wäre meines Erachtens, wenn dieser Teil des Makros angepasst werden könnte:

myString = myString & Mid(rngZelle, Start + 1, 6) & ", "

Viele Grüße
Tom

https://www.herber.de/bbs/user/169776.xlsm
Anzeige
AW: VBA Texte in Klammern auslesen
29.05.2024 15:24:44
Tom
Hallo Onur,

vielen Dank, in der Beispieldatei klappts, in der Originaldatei leider nicht überall. Wenn nur 1 fünfstellige Ziffer enthalten ist, wird die ) mit gezogen.

Hättest du vielleicht auch eine Idee, wie man die Klammerinhalte in einer weiteren Spalte einzeln untereinander auflisten könnte?

Viele Grüße
Thomas

https://www.herber.de/bbs/user/169779.xlsm
Anzeige
AW: VBA Texte in Klammern auslesen
29.05.2024 15:29:41
Onur
Wieso postest du deine Datei mit DEINEM Makro ???
AW: VBA Texte in Klammern auslesen
29.05.2024 15:56:41
Tom
Sorry Onur, da ist was durcheinander geraten. Dein Makro funktioniert perfekt, vielen Dank.

Hättest du noch eine Idee wegen der einzelnen Auflistung der Klammerinhalte untereinander? Dann wäre die Sache perfekt gelöst.

Viele Grüße
Tom
Anzeige
AW: VBA Texte in Klammern auslesen
29.05.2024 16:06:33
Onur
Untereinander? Wie soll das denn gehen? Die stehen doch bereis zeilenweise untereinander.
AW: VBA Texte in Klammern auslesen
29.05.2024 16:11:58
Tom
Ich meinte damit, dass auch die Inhalte, wo mehrere in einer Zelle stehen und durch Kommata getrennt sind, einzeln aufgelistet werden.
AW: VBA Texte in Klammern auslesen
29.05.2024 16:12:50
Onur
Hab es gerade eben gepostet.
Anzeige
AW: VBA Texte in Klammern auslesen
29.05.2024 16:11:10
Onur
Jetzt weiss ich, was du willst:
Einfach Komma durch vbLf ersetzen:
myStr = myStr & vbLf & arr(i)
AW: VBA Texte in Klammern auslesen
29.05.2024 16:17:55
Tom
Perfekt, genau so soll es sein. Danke dir vielmals Onur.
Gerne !
29.05.2024 16:19:10
Onur
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige