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

Funktion Gleiche Buchstaben

Forumthread: Funktion Gleiche Buchstaben

Funktion Gleiche Buchstaben
24.08.2016 00:00:50
Alifa
Hallo,
die gesuchte Funktion soll zwei gleichlange, verschiedene Wörter darauf prüfen, ob sie eine vorgegebene Anzahl von gleichen Buchstaben haben.
Function GleicheBuchstaben(a,b,z) As Boolean
a,b die beiden Worte. z die vorgegebene Anzahl von gleichen Buchstaben.
Beispiel: a="STELLE", b="FLIEGE", z=3. ergibt True
Wenn Buchstaben mehrfach vorkommen, wird es schwierig. Mein Ansatz: Von beiden Worten die gleichen Buchstaben in Etappen streichen, bis es keine mehr gibt. a wird "STL" und b wird "FIG". Die Etappen zählen. Kann mir jemand helfen?
Gruß, Erhard
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Deine Funktion 'GleicheBuchstaben' muss ...
24.08.2016 05:01:16
Luc:-?
x = Replace(x, Mid(b, p, 1), 1, 1) in einem Zyklus von p = 1 bis p = Len(b) nach Initialisierung x = a enthalten, Erhard;
anschließend ergibt sich die VglsLänge aus Len(a) - Len(x).
Genau das passiert auch in folgd Fml, die die bisher unveröffentlichte UDF RepOpt zur Operations­Wiederholung (hier WECHSELN ⇒ Substitute) einsetzt:
=LÄNGE(A1)-LÄNGE(RepOpt("substitute";LÄNGE(A1);1;2;A1;VSplit(B1;"");"";1))
Die letzten 4 Argumente der UDF entsprechen den Argumenten von WECHSELN, wobei hier das davon 2. in allen seinen Elementen (von UDF VSplit erzeugte Einzel­Buchstaben) durchlaufen wird.
Versuche mit anderen UDFs in Kombination führten übrigens nicht immer zum vermutlich erwünschten Ergebnis:
a/b/c ⇒ alpha/lappe/3 bzw komiker/monitor/4
Morrn, Luc :-?
Anzeige
AW: Deine Funktion 'GleicheBuchstaben' muss ...
24.08.2016 09:31:42
Alifa
das klappt leider nicht, denn: Replace ersetzt beide "L" von STELLE. Im Sinne der gestellten Aufgabe ist nur EIN "L" von "STELLE" zu ersetzen. In "FLIEGE" gibt es halt nur ein "L". Also nur EIN Buchstabe ist in diesem Beispiel gemeinsam. Trotzdem danke für den Beitrag.
VG Erhard
Das stimmt nicht, ...
24.08.2016 13:53:39
Luc:-?
…Erhard,
x = Replace(x, Mid(b, p, 1), 1, 1) ersetzt immer nur den 1.Buchstaben, was dem 4.Argument geschuldet ist, das du natürlich auch so angeben musst. Daniel hat dir eine Komplett-UDF geliefert, in der das genauso umgesetzt ist. Meine (unveröffentlichte) UDF macht das auch nicht anders, weil Replace, so argumentiert, mit x = WorksheetFunction.Substitute(x, Mid(b, p, 1), 1) in der Wirkung übereinstimmt.
Luc :-?
Anzeige
AW: Funktion Gleiche Buchstaben
24.08.2016 11:47:51
Daniel
Hi
probier mal diese UDF
die doppelten Buchstaben werden hoffentlich in deinem Sinn berücksichtigt.
Function GleicheBuchstaben(Wort1 As String, Wort2 As String, AnzahlGB As Long) As Boolean
Dim i As Long
Dim Zähler As Long
Dim B As String
For i = 1 To Len(Wort1)
B = Mid(Wort1, i, 1)
Zähler = Zähler - (InStr(Wort2, B) > 0)
Wort2 = Replace(Wort2, B, "", 1, 1)
Next
GleicheBuchstaben = (Zähler = AnzahlGB)
End Function
Gruß Daniel
Anzeige
AW: Funktion Gleiche Buchstaben
24.08.2016 13:55:59
Alifa
Hallo,
passt perfekt. Bitte kommentiere diese beiden Zeilen.
Zähler = Zähler - (InStr(Wort2, B) > 0)
Wort2 = Replace(Wort2, B, "", 1, 1)
Danke für die Hilfe
VG Erhard
AW: Funktion Gleiche Buchstaben
24.08.2016 14:08:59
Daniel
Hi
was gibt's da gross zu kommentieren?
in der ersten Zeile wird geprüft, ob der gesuchte Buchstabe im 2. Wort vorhanden ist und wenn ja, wird der Zähler um 1 erhöht.
In VBA ist in Berechnungen ein WAHR = -1 und ein FALSCH = 0
In der zweiten Zeile wird dann der geprüfte Buchstabe aus dem Wort entfernt, und zwar nur das erste Vorkommen des Buchstabens (dafür sortg der 5. Parameter)
Das ist so notwendig, um bei mehrfach vorkommenden Buchstaben in unterschiedlicher Anzahl in beiden Wörtern korrekt zu zählen.
Was die einzelnen Befehle machen und wie sie paramtetrisiert werden kannst du in der Hilfe nachlesen.
Gruß Daniel
Anzeige
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