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

Mehrere WECHSELN in Formel kürzer darstellen

Forumthread: Mehrere WECHSELN in Formel kürzer darstellen

Mehrere WECHSELN in Formel kürzer darstellen
05.06.2025 12:49:10
daniel
Hallo

folgendes Problem; ich in Zelle A1 einen längeren Text mit mehreren Zeichen, die ausgetauscht werden müssen.
bislang mache ich das mit WECHSELN, was aber für jedes zu ersetzende Zeichen ein eigenes Wechseln erfordert.

A1: _ä_ö_ü_
B1: =WECHSELN(WECHSELN(WECHSELN(A1;"ä";"ae");"ö";"oe");"ü";"ue")
Ergebnis: _ae_oe_ue_

Problem hierbei: für jedes Zeichen muss ein eigenes Wechseln angelegt werden.
Wenn jetzt weitere Zeichen hinzukommen, muss die Formel erweitert werden und wird dabei immer länger.

gibt es eine Möglichkeit, dass man die Auszutauschenden Zeichen in einem Zellbereich hinterlegt und dann in einer Art Matrixformel die Wechsel durchgeführt werden?
ein einfaches: =WECHSELN(A1;C1:C3;D1:D3) funktioniert nicht, da es als Ergebnis dann drei Werte ausgibt , in der nur eine Wechsel durchgeführt wurde, und nicht einen Text mit allen Wechseln.

kann man mit Excel 365 hier eine Formel bauen, in der man die Zeichen über einen Zellbereich einsteuern kann, so dass die Formel bei zunehmender Zeichenzahl auch nicht länger wird?
Mich interessiert hier die Formellösung, dass man mit VBA eine einfache UDF schreiben kann, die das macht ist klar, hier aber keine Option.

Gruß Daniel

Anzeige

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Im Anhang habe...
05.06.2025 14:41:47
Case
Moin Daniel, :-)

... ich eine Möglichkeit per Formel dargestellt: ;-)
https://www.herber.de/bbs/user/177675.xlsx

Servus
Case
Anzeige
AW: Mehrere WECHSELN in Formel kürzer darstellen
06.06.2025 00:35:47
xlKing
Hi Daniel,

warum ist eine VBA UDF hier keine Option? Ich finde eine Lösung über VBA viel einfacher als diese neumodischen Office 365-Formeln. Denn damit kann man sich seine Wunschformeln bauen. Für alle die noch kein O365 haben, hier ein UDF-Vorschlag. Einfach in ein allgemeines Modul einfügen:

Function Multiwechseln(ByVal Text As String, ParamArray Args()) As String

For a = 0 To UBound(Args) Step 2
If TypeOf Args(a) Is Range And TypeOf Args(a + 1) Is Range Then
For c = 1 To Args(a).Cells.Count
Text = Replace(Text, Args(a).Cells(c), Args(a + 1).Cells(c))
Next c
Else
Text = Replace(Text, Args(a), Args(a + 1))
End If
Next a
Multiwechseln = Text
End Function


Damit kann man dann Formeln bauen wie: =multiwechseln(F12;"Ä";"Ae";"Ö";"Oe";"Ü";"Ue";"ä";"ae";"ö";"oe";"ü";"ue")
oder auch =multiwechseln(F12;F8:K8;F9:K9) oder sogar =multiwechseln(F12;F8:H8;F9:H9;I8:K8;I9:K9)

Man muss halt nur aufpassen, dass es für jeden zu ersetzenden Parameter auch ein Pendant gibt, das diesen ersetzt, bzw. im Fall von Bereichen, diese die gleiche Größe aufweisen. Ist logisch oder?

Gruß Mr. K.


Anzeige
AW: Mehrere WECHSELN in Formel kürzer darstellen
06.06.2025 00:53:56
daniel
warum ist eine VBA UDF hier keine Option?

naja, weil ich VBA kann und das als Funktion zu programmieren ist ja nicht schwierig. Ich wollte wissen, wie das im neuen Excel per Formel geht und daher erstmal Formelideen und keine VBA-Makros als Lösung erhalten.

Aber trotzdem Danke.

Gruß Daniel
Anzeige
AW: Im Anhang habe...
05.06.2025 15:01:15
daniel
Hi
Danke.
Lambda hatte ich befürchtet. Das muss ich erstmal verstehen.
Gruß Daniel
Du könntest das...
05.06.2025 15:05:28
Case
Moin Daniel, :-)

... auch wunderbar in Power Query lösen. Möchtest du ein Beispiel? ;-)

Servus
Case
Nachfolgend...
05.06.2025 17:15:47
Case
Moin Daniel, :-)

... versuche ich es mal zu erklären (bin allerdings nicht der Erklärbär): ;-)
REDUCE ist eine Funktion, die einen Anfangswert nimmt und ihn dann schrittweise über eine Liste von Werten verändert - und dafür die LAMBDA-Funktion nutzt/braucht. Für REDUCE brauche ich einen Anfangswert - hier text (also dein Text oder Textbereich), dann Werte - das macht SEQUENZ(ANZAHL2(alt)), ergibt eine Zahlenliste von 1 bis Anzahl der Ersetzungen (z.B. 1,2,3,4,5 für 5 Zeichen). ;-)

LAMBDA Nimmt den aktuellen Text (aktText) und ersetzt darin das i-te Element aus alt (also z. B. ä) durch das i-te Element aus neu (also z. B. ae) und gibt anschließend den so bearbeiteten Text zurück, der dann als aktText in den nächsten Schritt geht. Also LAMBDA wird für jeden Schritt ausgeführt und braucht 2 Parameter - aktText, der aktuelle Text bzw. im nächsten Schritt der veränderte Wert und i, der aktuelle Index ais SEQUENZ(1,2,3...). ;-)

Da alle nötigen Funktionen arrayfähig sind spillt das auch für A1:Ax.

Und du kannst auch in der Formel schreiben: =LET(text;A.:.A usw. - also auch hier mit den Punkten. :-)

Beide in den Links erklärt: ;-)
https://support.microsoft.com/de-de/office/reduce-funktion-42e39910-b345-45f3-84b8-0642b568b7cb
https://support.microsoft.com/de-de/office/funktion-lambda-bd212d27-1cd1-4321-a34a-ccbf254b8b67

Servus
Case
Anzeige
AW: Im Anhang habe...
05.06.2025 18:54:02
BoskoBiati
Hi,

falscher Text, funktioniert nicht ohne Lambda, aber ohne Zuspalte!

Gruß

Edgar
AW: Im Anhang habe...
05.06.2025 19:07:40
daniel
das mit dem Zuspalte versorgt nur die Liste mit den zu wechselnden Werten und ist für die eigentliche Problemlösung nicht relevant.
eine einfache Formel mit Reduce und Lambda findet sich auch im Link von der Antwort von SF (bzw ich habe sie in meinem Feedback dazu nochmal dargstellt.
Anzeige
AW: Nachfolgend...
05.06.2025 18:27:01
daniel
Danke.
Deine Erklärung macht es für mich verständlich.
die MS-Hilfen allein sind doch sehr technisch geschrieben und helfen vielleicht dem, der nur noch Details zur Verwendung nachschlagen muss, aber für jemanden, der sich neu in die Funktion einarbeiten will, ist es doch manchmal sehr abstrakt.
Gruß Daniel
Anzeige
AW: Du könntest das...
05.06.2025 16:17:08
daniel
ja, wäre gut.
AW: Hier mit...
05.06.2025 16:48:57
daniel
Danke.

Wenn ich mir das anschaue, dann ist mir VBA irgendwie symphatischer.

Hier kann...
05.06.2025 17:29:59
Case
Moin Daniel, :-)

... ich nicht zustimmen. M-Code ist IMHO einfacher zu verstehen. ;-)

Und VBA wird ja auch immer öfter untersagt bzw. darf nicht mehr genutzt werden. ;-)

Servus
Case
Anzeige
AW: dies da ist aber mE nicht das, was angestrebt ist, ...
05.06.2025 13:31:47
neopa C
Hallo SF,

... da ich aber (noch) kein XL365 habe, kann ich auch nichts zur Lösungsfindung beitragen. Aber ich meine, eine solche könnte/sollte es in XL365 geben.
Mein "Beitrag" hier dient lediglich mir dafür, dass ich Folgebeiträge hierzu im Auge behalte und den thread später einmal auch leichter wiederfinden kann.

Gruß Werner
.. , - ...
aus C the unseen

Anzeige
AW: Mehrere WECHSELN in Formel kürzer darstellen
05.06.2025 14:38:31
daniel
Danke für den Link.
die drei Vorschläge von Detlef waren hilfreich (im Original halt leider nicht zur gefragten Excelversion passend)

allerdings haben sie auch ihre Einschränkungen:
Variante 1 ist einfach, funktioniert aber nur für Einzelzeichen:
=LET(a;A1;b;SEQUENZ(LÄNGE(a));c;TEIL(a;b;1);TEXTKETTE(WENNFEHLER(SVERWEIS(c;tabUmlaute;2;0);c)))


Variante 2 benutzt Lambda und Rekursion, was mich intellektuell noch überfordert und ich da noch nicht nachvollziehen kann, wie es funktioniert, so dass ich die Formel selbst schreiben könnte.
=REDUCE(A1; tabUmlaute2[Zeichen]; LAMBDA(a;b; WECHSELN(a; b; BEREICH.VERSCHIEBEN(b;0;1))))


Variante 3 ist für PQ, da muss ich prüfen, ob ich das einsetzen kann.

Gruß Daniel
Anzeige
AW: dies da ist aber mE nicht das, was angestrebt ist, ...
05.06.2025 13:54:00
SF
@Werner: du hast Recht. In 365 geht das bestimmt auch recht einfach, noch hab ich aber nichts gefunden.
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