title image


Smiley Re: Schönheitsfehler!
Hi Wastl,



habe jetzt erst zufällig gesehen, das Du nochmal geantwortet hast.



Folgendes Makro löst das problem:



Function ähnlich2(t1 As String, t2 As String, minFolge As Long) As Long

Dim l As Long

Dim x As Long

Dim y As Long

Dim Folge As Long

Dim maxFolge As Long

Dim SumFolge As Long







l = Len(t1)



ReDim Feld(1 To l)



For x = 1 To l

maxFolge = 0

For y = 1 To l

If l >= x + y - 1 Then

Folge = IIf(InStr(1, t2, Mid(t1, x, y)), y, 0)

If Folge > maxFolge Then

maxFolge = Folge

End If



End If

Next

Feld(x) = maxFolge

Next



If Feld(1) >= minFolge Then SumFolge = Feld(1)

For x = 2 To l

If Feld(x) > Feld(x - 1) And Feld(x) >= minFolge Then SumFolge = SumFolge + Feld(x)

Next

ähnlich2 = SumFolge

End Function



Hier werden übereinstimmende Folgen addiert.



Es gibt aber weiterhin eine Restriktion, die sich nicht vermeiden läßt:



Im dritten Argument muß die Mindestlänge einer Folge angegeben werden, die berücksichtigt werden soll.



=ähnlich2("Ein Anfänger der Gitarre hat Eifer";"Ein Anfenger der Gitarre hat Eifer";4) ergibt 33



=ähnlich2("Ein Anfänger der Gitarre hat Eifer";"Ein Anfenger der Gitarre hat Eifer";8) ergibt nur 26, weil die erste übereinstimmende Zeichenfolge "Ein Anf" nur 7 Zeichen hat und nicht berücksichtig wird.



Die Angabe der Mindestfolgenlänge muß sein, da sonst auch einzelne Buchstaben berücksichtigt würden und dann ergäbe



"wastl" und

"tlasw"



eine Übereinstimmung von 100%



Grüße

jens







geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: