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

Zelleninhalt bearbeiten

Forumthread: Zelleninhalt bearbeiten

Zelleninhalt bearbeiten
18.02.2026 10:03:19
addi
Hallo Zusammen, vorab...ich kann leider keinen Upload machen - dies wird von unserer IT unterbunden.
Ich habe folgendes Problem:
Ich möchte einen Zellwert, der mehr oder weniger identisch aufgebaut ist in zwei Zellen (nebeneinander) ausgeben.
Beispiel: In der Zelle F2 steht: "Kunde 1 [1545] Information 1 (01.01.2020)"
Mein Ergebnis soll lauten in G2: "Kunde 1, Information 1 (01.01.2020)" und in H2: "1545"
Im Groben soll nur der Wert in den eckigen Klammern separiert werden und gleichzeitig die eckigen Klammern entfernt...der Rest soll stehen bleiben und ebenfalls in eine neue Zelle geschrieben werden.
Kunde 1 und Information 1 können unterschiedlich lang sein und auch aus unterschiedlich vielen Wörtern bestehen...
Und zum Schluss noch....diese Funktionalität soll nur dann gemacht werden, wenn sich in D2 ein "x" befindet.
Die Dateien haben in der Regel ca. 300-350 Zeilen...
Habt Ihr hier eine Idee, könnt Ihr mir helfen?
Vielen Dank vorab...
Viele Grüße
addi23
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelleninhalt bearbeiten
18.02.2026 10:08:34
daniel
Hi

=Textnach(Textvor(F2;"]");"[")
=Textvor(F2;"[")&", "&Textnach(F2;"]")

Gruß Daniel
Du könntest es...
18.02.2026 11:08:55
Case
Moin, :-)

... z. B. so machen - per Formel in G2: ;-)
=WEGLASSEN(WENN(D2:.D1000="x";HSTAPELN(GLÄTTEN(REGEXERSETZEN(F2:.F1000;"\s*\[.*?\]\s*"; ", "));REGEXEXTRAHIEREN(F2:.F1000;"\[(.*?)\]";2));"");-1)

Oder per VBA: ;-)
Option Explicit

Public Sub Main()
Tabelle1.Range("G2").Formula2 = "=DROP(IF(D2:.D1000=""x"",HSTACK(TRIM(REGEXREPLACE(F2:.F1000,""\s*\[.*?\]\s*"", "", "")),REGEXEXTRACT(F2:.F1000,""\[(.*?)\]"",2)),""""),-1)"
End Sub

Servus
Case

https://www.herber.de/bbs/user/180298.xlsb
Anzeige
AW: Zelleninhalt bearbeiten
18.02.2026 12:00:26
addi
Vielen lieben Dank an alle,

ich habe nun Daniels Formeln mal implementiert und eine Schleife die ebenfalls schon in dem bestehenden Coding existiert genommen.
In meiner Testdatei funktioniert das schon mal so wie ich es mir gewünscht habe... :-)
Ich teste das noch an einer produktiven Datei mit mehr Einträgen und würde mich für den Fall das es nicht funktioniert nochmals melden.
Ansonsten wie gesagt DANKE an alle!!!

VG addi23
Anzeige
Und wenn du es...
18.02.2026 11:43:23
Case
Moin, :-)

... im Block ausgeben möchtest, dann so (Formel): ;-)
=LET(z;FILTER(F2:F1000;D2:D1000="x");HSTAPELN(GLÄTTEN(REGEXERSETZEN(z;"\s*\[.*?\]\s*"; ", "));REGEXEXTRAHIEREN(z;"\[(.*?)\]";2)))

Und VBA: ;-)
Tabelle1.Range("G2").Formula2 = "=LET(z,FILTER(F2:F1000,D2:D1000=""x""),HSTACK(TRIM(REGEXREPLACE(z,""\s*\[.*?\]\s*"", "", "")),REGEXEXTRACT(z,""\[(.*?)\]"",2)))"

Servus
Case
Anzeige
AW: Zelleninhalt bearbeiten
18.02.2026 10:14:00
addi
Hallo Daniel,
vielen Dank für die schnelle Rückmeldung - ich habe in meiner Anfrage ganz vergessen, das ich diese Funktionalität in ein bestehendes Makro, das diese Datei bearbeitet
einbauen möchte...könntest Du das auch ins VBA Coding übersetzen?
Insbesondere unter Berücksichtung das dies nur geschehen darf wenn in der Spalte D ein "x" steht??
Vielen Dank und Gruß
addi23
Anzeige
AW: Zelleninhalt bearbeiten
18.02.2026 10:39:40
daniel
naja, erstmal die Formel erstellen.
ein =Wenn(D2="x";...;"")
sollte jeder Excelandwender mit Grundkenntnissen auch alleine hinbekommen.

wenn man es als Makro benötigt, kann man das einfügen der Formel mit dem Recorder aufzeichnen
Gruß Daniel
AW: Zelleninhalt bearbeiten
18.02.2026 12:10:34
daniel
Hi
unter ausnutzen der neuen Funktionaltäten von Excelformeln könnte das Makro inklusive automatischer Bereichsermittlung auch so aussehen:

Range("G2").Formula2R1C1 = "=LET(a,R2C6.:.R9999C6,b,OFFSET(a,0,-2),IF(b=""x"",HSTACK(TEXTBEFORE(a,""["")&TEXTAFTER(a,""]""),TEXTBEFORE(TEXTAFTER(a,""[""),""]"")),{"""",""""}))"


wenn man keine Formeln in der Datei haben will sondern feste Werte, dann mit dieser Erweiterung:
With Range("G2")

.Formula2R1C1 = "=LET(a,R2C6.:.R9999C6,b,OFFSET(a,0,-2),IF(b=""x"",HSTACK(TEXTBEFORE(a,""["")&TEXTAFTER(a,""]""),TEXTBEFORE(TEXTAFTER(a,""[""),""]"")),{"""",""""}))"
With .SpillingToRange
.Formula = .Value
End With
End With


Eine Schleife mit reinem VBA, die das erledigt, könnte so aussehen.
Das würde dann auch in älteren Excelversionen funktionieren
Sub makro3()

Dim Zelle As Range
Dim TeilTexte
For Each Zelle In Columns(6).SpecialCells(xlCellTypeConstants, 2)
If Zelle.Offset(0, -2).Value = "x" Then
If Zelle.Value Like "*[[]*[]]*" Then
TeilTexte = Split(Replace(Zelle.Value, "[", "]"), "]")
Zelle.Offset(0, 1).Value = TeilTexte(0) & TeilTexte(2)
Zelle.Offset(0, 2).Value = TeilTexte(1)
End If
End If
Next
End Sub


Gruß Daniel
Anzeige
AW: Zelleninhalt bearbeiten
18.02.2026 10:47:23
addi
Hallo Daniel,
nochmals vielen Dank - in der Tat traue ich mir das auch noch zu...die Probleme treten auf wenn ich dies in eine Schleife packen möchte, damit alle Zeilen im Sheet durchlaufen werden...
Ich versuche es einfach mal...
Vielen lieben Dank
addi23
AW: Zelleninhalt bearbeiten
18.02.2026 10:57:38
daniel
du brauchst keine Schleife
markiere alle Zellen, die die Formel erhalten sollen und schließe die Eingabe mit STRG+ENTER ab.
zeichne das mit dem Recorder auf.
mach erst mal diese Vorarbeit und versuche das umzusetzen. Wenns dann irgendwo hakt, kannst du ja nochmal fragen.
Gruß Daniel
Anzeige
AW: Zelleninhalt bearbeiten, Schleife
18.02.2026 11:09:56
MCO
Hey Addi!

Möglicherweise hast du Recht, vielleicht aber auch nicht.
Das Aufzeichnen der Formel hat immer noch den festen Inhalt der RANGE und ist damit nicht dynamisch bei Bereichsänderungen.
Da der Code ja auch nicht einzeln läuft sondern eingebunden werden soll, ist es leider für uns schwierig die beste Lösung darzustellen.

@Daniel:
Zur Vollständigkeit: hier die Schleife, die macht was du willst:
Sub Zeilendurchlauf()


Dim zl As Range
Dim begr_str As String
Dim a As Variant
Dim b As Variant

For Each zl In ActiveSheet.UsedRange.Rows
If Cells(zl.Row, "D") = "x" Then

a = Split(Cells(zl.Row, "F"), "[")
b = Split(a(1), "]")
Cells(zl.Row, "G") = Trim(a(0)) & "," & b(1)
Cells(zl.Row, "H") = b(0)
End If
Next zl
End Sub


Gruß, MCO
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18