Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1508to1512
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
Inhaltsverzeichnis

Funktion Gleiche Buchstaben

Funktion Gleiche Buchstaben
23.08.2016 22: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

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

Betreff
Datum
Anwender
Anzeige
Deine Funktion 'GleicheBuchstaben' muss ...
24.08.2016 03: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 07: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 11: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 09: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
AW: Funktion Gleiche Buchstaben
24.08.2016 11: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
Anzeige
AW: Funktion Gleiche Buchstaben
24.08.2016 12: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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige