Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Text in Klammern kopieren

Text in Klammern kopieren
20.05.2008 16:49:34
Mirko
Hallo,
Ich suche für folgendes Problem nach einer Makro-Lösung:
Ich möchte den Text, der in der LETZTEN Klammer einer Zelle steht, in eine neue Spalte kopieren. Da in manchen Zellen mehrere Klammern vorkommen, ist es wichtig das nur der Inhalt der letzten Klammer kopiert wird (wenn möglich ohne die Klammerzeichen). Kann mir da jemand weiterhelfen?
Vielen Dank!
Mirko

Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Text in Klammern kopieren
20.05.2008 17:04:12
Gerd
Hallo Mirko,
( ) diese Klammern? Steht die letzte schließende Klammer immer am Schluss der Zeichenfolge?
Gruß Gerd

AW: Text in Klammern kopieren
20.05.2008 17:08:17
Mirko
Hallo Gerd!
zweimal ja! es geht um diese "()" Klammern und die letzte schließende Klammer steht immer am Schluß der Zelle . Hast Du einen Vorschlag?
Mirkro

Anzeige
AW: Text in Klammern kopieren
20.05.2008 17:58:09
Stempfle
noch eine Variante

Private Sub CommandButton1_Click()
On Error GoTo letzteZeile
Dim ZellWert As String
Dim Länge As Integer
Dim Anfang As Integer
Dim Ende As Integer
Dim LKlammerwert As String
Dim ZF1 As String
Dim ZF2 As String
Sheets("Tabelle1").Activate
Range("A1").Select
Do Until ActiveCell.Value = ""
ZellWert = ActiveCell.Value
Länge = Len(ZellWert)
For a = 1 To Länge
If Mid(ZellWert, a, 1) = "(" Then Anfang = a
If Mid(ZellWert, a, 1) = ")" Then Ende = a
Next a
ZF1 = Right(ZellWert, Länge - Anfang)
ZF2 = Left(ZF1, Ende - 1 - Anfang)
MsgBox ZF2
ActiveCell.Offset(1, 0).Select
Loop
letzteZeile:
End Sub


Anzeige
AW: Text in Klammern kopieren
20.05.2008 17:09:00
Daniel
Hallo
mal ne kleine Rückfrage, was ist für dich in diesem Beispiel die letze Klammer
a(bcd)efghijklmnopq(rstu(vw)xy)z
vw oder rstu(vw)xy
Gruß, Daniel

AW: Text in Klammern kopieren
20.05.2008 17:18:00
Mirko
Hi Daniel!
sorry, für die undeutliche Ausdrucksweise. Aus der folgenden Darstellung sollte klar werden, was ich möchte:
Nachname, Vorname (Text)
Nachname, Vorname (Zweitname) (Text)
Nachname (Doppelname), Vorname (Text)
So ist das etwa aufgebaut. Der zu kopierende "Text" steht immer in der letzten Klammer der Zelle. Besser?
Noch eine kurze Anmerkung: mit dem kopieren habe ich mich auch etwas falsch ausgedrückt. Der Text soll zwar kopiert werden, danach aber auch aus der Original-Zelle gelöscht werden (inklusive der Klammerzeichen).
Liebe Grüße
Mirko

Anzeige
AW: Text in Klammern kopieren
20.05.2008 17:37:09
Daniel
Hi
ok es kommen also keine geschachtelten Klammern vor.
den Text in der Formel kannst ja mit der Funktion von FCS ermitteln.
wenn jetzt der beispielsweise Text in in Zelle A1 steht dessen inhalt der letzten Klammern nach B1 geschrieben werden soll, dann würde der Code dazu so aussehen:

Range("B1").value = fncTextausKlammer(Range("A1").value)


der Code zum Löschen des Klammertextest aus A1 würde dann so aussehen:


Range("A1").value = Replace(Range("A1").value, "(" &  fncTextausKlammer(Range("A1").value) & ")", "")


der Code von FCS muss natürlich auch noch ins Modul rein, hier nochmal sein korrigierter Code (war ein Tippfehler drin)


Function fncTextausKlammer(strText As String) As String
If InStr(1, strText, ")") > 0 And InStr(1, strText, "(") > 0 Then
fncTextausKlammer = Mid(strText, InStrRev(strText, "(", -1) + 1, _
InStrRev(strText, ")", -1) - InStrRev(strText, "(", -1) - 1)
End If
End Function
Sub test()
Range("B1").Value = fncTextausKlammer(Range("A1").Value)
Range("A1").Value = Replace(Range("A1").Value, "(" & fncTextausKlammer(Range("A1").Value) & ")", _
_
"")
End Sub


Gruß, Daniel

Anzeige
AW: Text in Klammern kopieren
20.05.2008 17:51:00
Mirko
Hi Daniel,
vielen Dank für die Antwort. Bitte sei mir nicht böse, dass ich mich etwas blöd anstelle. Habe jetzt den folgenden Code in ein Modul kopiert:

Function fncTextausKlammer(strText As String) As String
If InStr(1, strText, ")") > 0 And InStr(1, strText, "(") > 0 Then
fncTextausKlammer = Mid(strText, InStrRev(strText, "(", -1) + 1, _
InStrRev(strText, ")", -1) - InStrRev(strText, "(", -1) - 1)
End If
End Function



Sub test()
Range("B1").Value = fncTextausKlammer(Range("A1").Value)
Range("A1").Value = Replace(Range("A1").Value, "(" & fncTextausKlammer(Range("A1").Value) & ")", _
_
_
"")
End Sub


Hoffe das war soweit richtig. Und was mach ich nun? wenn ich z.B. in Zelle B2 "=TextausKlammer" eingebe, bekomme ich nur "?#Name".

Anzeige
AW: Text in Klammern kopieren
20.05.2008 17:57:19
Daniel
Hi
du musst immer den Funkionsnamen verwenden, der hinter FUNCTION steht, in diesem Fall also fncTextausKlammer
btw. wenn du den Text einfach so kopiert hast dann musst du wahrscheinlich noch die Zeilenumbrüche bereinigen, die der Editor hier reingebastelt hat (rote Zeilen im VBA-Editior) dazu den Unterstrich, den Zeilenumbruch und die Leerzeichen löschen.
Gruß, Daniel

Anzeige
AW: Text in Klammern kopieren
20.05.2008 17:57:55
Mirko
Hat sich erledigt. Ich hab's jetzt doch hinbekommen. Vielen Dank für die Hilfe!

AW: Text in Klammern kopieren
20.05.2008 17:11:49
fcs
Hallo Mirko
hier eine benutzerdefierte Funktion. Die Function kopierst du in im VBA-Editor in ein allgemeines Modul deiner Datei. Die Function verwendest du dann wie eine normale Formel.
=TextausletzterKlammer(F1)
Ich wüßte nicht, dass es die Suche von Rechts auch als Tabellenfunktion gibt.
Gruß
Franz

Function fncTextausKlammer(strText As String) As String
If InStr(1, strText, ")") > 0 And InStr(1, strText, "(") > 0 Then
TextausletzterKlammer = Mid(strText, InStrRev(strText, "(", -1) + 1, _
InStrRev(strText, ")", -1) - InStrRev(strText, "(", -1) - 1)
End If
End Function


Anzeige
AW: Text in Klammern kopieren
20.05.2008 17:35:12
Mirko
Hallo Franz,
vielen Dank für die schnelle Antwort. Leider bin ich nicht so beschlagen in Excel. Habe Deinen Code jetzt in ein allgemeines Modul kopiert. Wenn ich jetzt "=TextausletzterKlammer(F1)" in eine benachbarte Zelle eingebe, kommt bei mir der Eintrag "#Name?". Was mache ich falsch? Sorry für meine Unwissenheit und
danke für Deine/ Eure Geduld.
Mirko

Anzeige
AW: Text in Klammern kopieren
20.05.2008 17:51:34
fcs
Hallo Mirko,
ich hatt noch den Namen der Funktion ganz zum Schluss noch geändert, die Formel muss jetz
=fncTextausKlammer(A1)
heißen, wenn der Text mit Klammern in A1 steht.
Hier noch die Makro - Lösung, die Werte der Konstanten für die Spalten muss du ggf. noch anpassen.
Gruß
Franz

Sub TextKlammern()
Dim wks As Worksheet, lngZeile As Long, strKlammerText As String
Const lngSpalteOrig = 1 'Spalte A
Const lngSpalteKlammer = 2 ' Spalte B
Set wks = ActiveSheet
With wks
For lngZeile = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
strKlammerText = TextausletzterKlammer(.Cells(lngZeile, lngSpalteOrig).Value)
If strKlammerText  "" Then
.Cells(lngZeile, lngSpalteKlammer) = strKlammerText
.Cells(lngZeile, lngSpalteOrig) = _
Replace(.Cells(lngZeile, lngSpalteOrig), "(" & strKlammerText & ")", "", 1)
End If
Next lngZeile
End With
End Sub
Function TextausletzterKlammer(strText As String) As String
If InStr(1, strText, ")") > 0 And InStr(1, strText, "(") > 0 Then
TextausletzterKlammer = Mid(strText, InStrRev(strText, "(", -1) + 1, _
InStrRev(strText, ")", -1) - InStrRev(strText, "(", -1) - 1)
End If
End Function


Anzeige
AW: Text in Klammern kopieren
20.05.2008 17:58:00
Mirko
Hallo Franz.
Tausend Dank dafür. Nach ersten Anlaufschwierigkeiten klappt es jetzt. suuuper!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Text in Klammern kopieren und extrahieren in Excel


Schritt-für-Schritt-Anleitung

Um den Text in Klammern zu kopieren und aus der Original-Zelle zu löschen, kannst Du die folgenden Schritte durchführen:

  1. Öffne den VBA-Editor:

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

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

    Function fncTextausKlammer(strText As String) As String
       If InStr(1, strText, ")") > 0 And InStr(1, strText, "(") > 0 Then
           fncTextausKlammer = Mid(strText, InStrRev(strText, "(", -1) + 1, _
           InStrRev(strText, ")", -1) - InStrRev(strText, "(", -1) - 1)
       End If
    End Function
    
    Sub TextKlammern()
       Dim wks As Worksheet, lngZeile As Long, strKlammerText As String
       Const lngSpalteOrig = 1 ' Spalte A
       Const lngSpalteKlammer = 2 ' Spalte B
       Set wks = ActiveSheet
       With wks
           For lngZeile = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
               strKlammerText = fncTextausKlammer(.Cells(lngZeile, lngSpalteOrig).Value)
               If strKlammerText <> "" Then
                   .Cells(lngZeile, lngSpalteKlammer) = strKlammerText
                   .Cells(lngZeile, lngSpalteOrig) = _
                   Replace(.Cells(lngZeile, lngSpalteOrig), "(" & strKlammerText & ")", "", 1)
               End If
           Next lngZeile
       End With
    End Sub
  4. Führe das Makro aus:

    • Schließe den VBA-Editor und gehe zurück zu Excel.
    • Drücke ALT + F8, wähle TextKlammern aus und klicke auf Ausführen.

Jetzt wird der Text in der letzten Klammer in die benachbarte Spalte kopiert und die Klammer mit dem Text wird aus der Original-Zelle entfernt.


Häufige Fehler und Lösungen

  • Fehler: #Name?
    Lösung: Stelle sicher, dass Du die Funktion genau so aufrufst, wie sie im VBA-Editor definiert ist. In diesem Beispiel ist es fncTextausKlammer.

  • Fehler: Klammer nicht gefunden
    Lösung: Überprüfe, ob die Zelle tatsächlich Klammern enthält und ob die Klammerzeichen in der richtigen Reihenfolge sind.


Alternative Methoden

Wenn Du keine Makros verwenden möchtest, kannst Du die folgende Formel verwenden, um den Text in der letzten Klammer zu extrahieren:

=TEIL(A1;SUCHEN("(";A1;SUCHEN(")";A1)-LÄNGE(A1)+1)+1;SUCHEN(")";A1)-SUCHEN("(";A1;SUCHEN(")";A1)-LÄNGE(A1)+1)-1)

Diese Formel funktioniert allerdings nur, wenn es keine geschachtelten Klammern gibt.


Praktische Beispiele

Nehmen wir an, Du hast in Zelle A1 den Text:

Nachname, Vorname (Zweitname) (Text)

Nach der Ausführung des Makros wird in Zelle B1 "Text" stehen und in A1 wird der Inhalt wie folgt aussehen:

Nachname, Vorname (Zweitname)

Tipps für Profis

  • Wenn Du häufig mit Klammern arbeitest, kannst Du die Funktionen in der Arbeitsmappe speichern und sie als Add-In verwenden.
  • Nutze die Funktion InStrRev in VBA, um von hinten nach vorne zu suchen, was besonders hilfreich ist, wenn Du nur den letzten Text in Klammern kopieren möchtest.

FAQ: Häufige Fragen

1. Kann ich den Code auch für andere Klammerarten verwenden?
Ja, Du kannst den Code leicht anpassen, um andere Klammerarten zu verwenden, indem Du die Zeichen in den If-Bedingungen änderst.

2. Was mache ich, wenn ich mehrere Klammern in einer Zelle habe?
Der bereitgestellte Code extrahiert nur den Inhalt der letzten Klammer. Wenn Du Inhalte aus mehreren Klammern kopieren möchtest, musst Du den Code entsprechend erweitern.

3. Funktioniert dieser Code in Excel Online?
Die VBA-Funktionalität ist in Excel Online nicht verfügbar. Du musst Excel auf dem Desktop verwenden, um diesen Code 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