Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
976to980
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
976to980
976to980
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
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

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

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

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

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!

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige