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

Forumthread: alle Vokale in einem String

alle Vokale in einem String
ing.grohn
Hallo Forum,
ich möchte aus einem String alle Vokale ermitteln, aus dem String entfernen und dann in einem neuen String umgekehrt wieder aneinanderreihen.
Einen kleinen Ansatz hab ich schon:
Tabelle3
 ABCD
1Vorgabe  Auffenwasser 
2       
3Umlaute etc. wandeln  Auffenwasser 
4Vokale entfernen  FFNWSSR 
5A  1A
6E  5E
7I  #WERT! 
8O  #WERT! 
9U  2U
10       
11Umgekehrt verketten    UEA

verwendete Formeln
Zelle Formel Bereich
C3 =WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(C1;"ß";"ss");"ä";"ae");"ö";"oe");"ü";"ue");"Ü";"Ue");"Ö";"Oe");"Ä";"Ae") 
C4 =WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(GROSS(C3);"A";"");"E";"");"I";"");"O";"");"U";"");"SCH";"Y") 
C5 =SUCHEN("A";GROSS(C1);1) 
D5 =WENN(ISTFEHLER(C5*1);"";GROSS(TEIL(C3;C5;1))) 
C6 =SUCHEN("E";GROSS(C1);1) 
D6 =WENN(ISTFEHLER(C6*1);"";GROSS(TEIL(C3;C6;1))) 
C7 =SUCHEN("I";GROSS(C1);1) 
D7 =WENN(ISTFEHLER(C7*1);"";GROSS(TEIL(C3;C7;1))) 
C8 =SUCHEN("O";GROSS(C1);1) 
D8 =WENN(ISTFEHLER(C8*1);"";GROSS(TEIL(C3;C8;1))) 
C9 =SUCHEN("U";GROSS(C1);1) 
D9 =WENN(ISTFEHLER(C9*1);"";GROSS(TEIL(C3;C9;1))) 
D11 =VERKETTEN(D9;D8;D7;D6;D5) 

Tabellendarstellung in Foren Version 5.28


Kann mir jemand weiterhelfen?
Vielen herzlichen Dank
Mit freundlichen Grüßen
Albrecht
Anzeige
AW: alle Vokale in einem String
19.08.2010 09:29:58
JogyB
Hallo Albrecht,
braucht zwar viele Hilfszeilen, aber eine bessere Lösung ist mir nicht eingefallen.
https://www.herber.de/bbs/user/71126.xls
Gruß, Jogy
AW: alle Vokale in einem String
19.08.2010 12:11:12
ing.grohn
Hallo Jogy,
recht herzlichen Dank für Deinen Lösungsvorschlag.
Bin mir sicher, dass das passt.
(ich denke, in VBA ist das einfacher!)
Vielen Dank und einen schönen Tag
Mit freundlichen Grüßen
Albrecht
Anzeige
AW: alle Vokale in einem String
19.08.2010 13:08:50
JogyB
Hallo Albrecht,
in VBA ist das natürlich einfacher, dachte Du wolltest unbedingt eine Formellösung:
Public Function VokaleVerkehrt(myRng As Range) As Variant
Dim regEx As Object
Dim treFFer As Object
Dim i As Long
On Error GoTo errorHandler
' Regulären Ausdruck erzeugen
Set regEx = CreateObject("VbScript.Regexp")
With regEx
' Suchmuster, also alle Vokale
.Pattern = "[aeiou]"
' Groß/Kleinschreibung egal
.IgnoreCase = True
' und alles soll gefunden werden
.Global = True
' Suche ausführen
Set treFFer = regEx.Execute(myRng.Text)
' Und nun die Treffer in umgekehrter Reihenfolge auslesen
' (ACHTUNG: beginnt bei 0!)
For i = treFFer.Count - 1 To 0 Step -1
VokaleVerkehrt = VokaleVerkehrt & UCase(treFFer.Item(i).Value)
Next
End With
' Falls es leer ist, würde wegen der Variant-Deklaration eine
' 0 in die Zelle eingetragen, deswegen explizite Zuweisung
' eines Strings
If VokaleVerkehrt = "" Then VokaleVerkehrt = vbNullString
Exit Function
errorHandler:
' Bei einem Fehler wird ein Fehlerwert ausgegeben
VokaleVerkehrt = CVErr(xlErrValue)
End Function

Das in ein allgemeines Modul, dann kannst Du es als UDF ansprechen.
Gruß, Jogy
Anzeige
AW: geht auch in VBA
19.08.2010 16:40:29
ing.grohn
Hallo Jogi,
das war sehr nett von Dir die Lösung auch in VBA zu programmieren.
Ich wollte aber die Lösung in Excel.
Trotzdem recht herzlichen Dank
Mit freundlichen Grüßen
Albrecht
Na und?! Verwende den udF-Namen in...
19.08.2010 19:33:38
Luc:-?
…einer Zell-Formel, Albrecht!
Gruß Luc :-?
AW: Na und?! Verwende den udF-Namen in...
19.08.2010 21:01:52
ing.grohn
Hi Luc,
kein Problem mit udF aber mit Excel.
Deshalb wollte ich gern die Lösung als Excel-Formel(n).
Mir ist aufgefallen, dass ich häufiger udFs einsetze, wo andere mit Excelfunktionen arbeiten
Mit freundlichen Grüßen
Albrecht
Anzeige
AW: Na und?! Verwende den udF-Namen in...
20.08.2010 07:29:13
JogyB
Hallo Albrecht,
ist mir auch vor 2-3 Jahren aufgefallen und ich nutze seither deutlich mehr Formeln. Nur in dem Fall würde ich dann doch auf die UDF zurückgreifen, vor allem weil die völlig unabhängig von der Länge des Textes funktioniert. Meine Formellösung ist doch eine Krankheit mit vielen Hilfszeilen, aber eine bessere Lösung fällt mir grade nicht ein ;).
Gruß, Jogy
Anzeige
Pflichte Jogy bei, auch, wenn es bestimmt...
20.08.2010 11:48:43
Luc:-?
…noch eine kürzere StanddFktsFmlVersion geben mag, Albrecht…
Viele mehr oder weniger raffinierte StanddFmlLösungen sind einfach zu lang und unübersichtlich und deshalb idR auch nicht praxistauglicher als eine udF-Lösung, denn bei der muss man ja als Anwender auch nicht unbedingt wissen wie sie fktt (nur, wie sie anzuwenden ist), Hptsache sie tut, was sie soll! ;-)
Außerdem gibt es für manchen Problemkreis keine Standardfkt u. damit oft auch keine StanddFmlLösung…
Gruß+schöWE, Luc :-?
Anzeige
AW: alle Vokale in einem String
19.08.2010 21:50:05
ing.grohn
Hallo Jogy,
kannst Du mir sagen/zeigen (wai) wo ich Infos zu "VbScript.Regexp"
bekomme (finde ich sehr interessant!!)
(googlen hat nicht viel gebracht!)
Mit freundlichen Grüßen
Albrecht
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Alle Vokale in einem String ermitteln und umkehren


Schritt-für-Schritt-Anleitung

  1. String in eine Zelle eingeben: Gib den gewünschten Text in eine Zelle ein, zum Beispiel in C1.

  2. Vokale entfernen: Nutze die WECHSELN-Funktion, um die Vokale (a, e, i, o, u) zu entfernen. In C4 kannst du folgende Formel verwenden:

    =WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(GROSS(C1);"A";"");"E";"");"I";"");"O";"");"U";""))
  3. Vokale extrahieren: Verwende die SUCHEN-Funktion, um die Positionen der Vokale zu finden. Beispiel für Zelle D5:

    =WENN(ISTFEHLER(SUCHEN("A";GROSS(C1);1));"";GROSS(TEIL(GROSS(C1);SUCHEN("A";GROSS(C1);1);1)))
  4. Umgekehrt verketten: Um die Vokale in umgekehrter Reihenfolge zu kombinieren, nutze die VERKETTEN-Funktion:

    =VERKETTEN(D9;D8;D7;D6;D5)

Diese Schritte helfen dir, alle Vokale in einem String zu ermitteln und sie in umgekehrter Reihenfolge anzuzeigen.


Häufige Fehler und Lösungen

  • Fehler: #WERT!: Dieser Fehler tritt auf, wenn die Formel nicht auf die richtige Zelle verweist. Überprüfe die Zellreferenzen in deinen Formeln.

  • Fehler: Leere Zelle: Wenn die Eingabezelle leer ist, gibt die Formel möglicherweise ein unerwartetes Resultat zurück. Stelle sicher, dass in der Zelle, die du analysieren möchtest, ein Text vorhanden ist.


Alternative Methoden

Eine effizientere Methode ist die Verwendung von VBA. Hier ein einfaches Beispiel für eine benutzerdefinierte Funktion (UDF), die alle Vokale umkehrt:

Public Function VokaleVerkehrt(myRng As Range) As Variant
    Dim regEx As Object
    Dim treFFer As Object
    Dim i As Long
    Set regEx = CreateObject("VbScript.Regexp")
    With regEx
        .Pattern = "[aeiou]"
        .IgnoreCase = True
        .Global = True
        Set treFFer = regEx.Execute(myRng.Text)
        For i = treFFer.Count - 1 To 0 Step -1
            VokaleVerkehrt = VokaleVerkehrt & UCase(treFFer.Item(i).Value)
        Next
    End With
    If VokaleVerkehrt = "" Then VokaleVerkehrt = vbNullString
End Function

Diese Funktion kann direkt in einer Zelle verwendet werden, indem du =VokaleVerkehrt(C1) eingibst.


Praktische Beispiele

Angenommen, du hast den Text "Auffenwasser" in C1 eingegeben. Dann wird durch die oben beschriebenen Schritte:

  1. Vokale entfernen: FFNWSSR
  2. Vokale extrahieren: A, U, E, A
  3. Umgekehrt verketten: UEA

Das Ergebnis zeigt die umgekehrten Vokale an.


Tipps für Profis

  • Verwendung von REGEX: Wenn du häufig mit Texten arbeitest, kann die Verwendung von regulären Ausdrücken (wie in VBA gezeigt) deine Arbeit erheblich erleichtern.

  • Hilfszeilen minimieren: Versuche, deine Formeln so zu optimieren, dass du weniger Hilfszeilen benötigst, indem du komplexe Berechnungen in einer einzigen Formel zusammenfasst.


FAQ: Häufige Fragen

1. Können alle Konsonanten auch entfernt werden?
Ja, du kannst die gleiche Methode verwenden, um alle Konsonanten zu finden und zu entfernen, indem du die Suchmuster in den Formeln anpasst.

2. Funktioniert das auch in Excel Online?
Die beschriebenen Formeln funktionieren in Excel Online, jedoch ist die VBA-Methode nur in Desktop-Versionen von Excel verfügbar.

3. Wo finde ich weitere Informationen zu regulären Ausdrücken in VBA?
Eine gute Quelle ist die Website ActiveVB, die detaillierte Erklärungen und Beispiele zu diesem Thema bietet.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige