Claudius
=([Text1]=[Text2]) ergibt WAHR bzw 1 bei Übereinstimmung
andernfalls FALSCH bzw 0.
[Text1], [Text2] können Zellbezüge aber auch "Text" sein.
mfg Peter
Claudius Sailer schrieb in Nachricht
<1dv1rqn.jw...@isdn088.s.netic.de>...
> =([Text1]=[Text2]) ergibt WAHR bzw 1 bei Übereinstimmung
> andernfalls FALSCH bzw 0.
> [Text1], [Text2] können Zellbezüge aber auch "Text" sein.
Die obige von Peter angegebene Lösung unterscheidet keine Klein- und
Großschreibung.
Falls dies notwendig ist, könnte man/frau die Tabellenfunktion IDENTISCH
verwenden!
lg aus Wien,
-Robert Gelbmann-
> Gibt es in Excel eine Funktion in der 2 Textstrings miteinander
> vergleicht und als Ergebnis eine Zahl herauskommt die die
> Uebereinstimmung beider Strings angibt?
>
> Claudius
Hallo Claudius,
=FINDEN("o"; "Hallo";1) ergibt in dem Fall 5.
Grüße Marco
versuch mal folgendes:
wenn in den Zellen A1 und B1 die zu vergleichenden Textstrings stehen, trag
in die zelle C1 folgendes ein :
=WENN(IDENTISCH(A1;B1);1;0)
oder auch als VBA
Sub Textvergleich()
Dim text1, text2 As String
text1 = Range("A1")
text2 = Range("B1")
If text1 = text2 Then
MsgBox 1
Else
MsgBox 0
End If
End Sub
Mfg Eckhard
> Hallo Peter! Hallo Claudius!
>
> > =([Text1]=[Text2]) ergibt WAHR bzw 1 bei Übereinstimmung
> > andernfalls FALSCH bzw 0.
> > [Text1], [Text2] können Zellbezüge aber auch "Text" sein.
>
> Die obige von Peter angegebene Lösung unterscheidet keine Klein- und
> Großschreibung.
> Falls dies notwendig ist, könnte man/frau die Tabellenfunktion IDENTISCH
> verwenden!
Stimmt, aber helfen tut mir keine von beiden, denn ich moechte keine
absolute sondern eine relative Aussage. Also z.B. "Hallo" und "Hello"
haben eine 80% Uebereinstimmung.
Claudius
Claudius
> [...]
> Stimmt, aber helfen tut mir keine von beiden, denn ich moechte keine
> absolute sondern eine relative Aussage. Also z.B. "Hallo" und "Hello"
> haben eine 80% Uebereinstimmung.
Tja, dann wird es ungleich schwieriger:
(1) Es gibt keine Tabellenfunktion, die den gewünschten Zweck erfüllt.
(2) Um selbst eine zu basteln, müßte man noch wissen, wie weit der
Vergleich gehen soll:
- Reicht es beispielsweise, wenn nur jene Zeichen als übereinstimmend
gelten, die an der gleichen Position stehen?
zB: "Hallo, Kurt" - "Hello, Kurt" ergibt 80%;
"Hallo, Kurt" - "Hello Kurt" ergibt hingegen nur ca. 45%, weil ja ein
großer Teil der Zeichen an einer anderen Position steht.
- Andernfalls müßte man ggf. noch die Reihenfolge von Wörtern oder gar
Zeichen berücksichtigen ...
Für den einfachen Fall habe ich Dir eine VBA-Routine zusammengestellt:
- in XL97: Extras/Makro/Visual Basic-Editor und dann Einfügen/Modul
- in XL95/XL5.0: Einfügen/Modulblatt (oder so ähnlich)
... und dann folgenden Code hineinkopieren:
---snip---
Function Übereinstimmung(Text1 As String, Text2 As String, KleinGross As
Boolean) As Single
AnzahlZeichen = Application.WorksheetFunction.Max(Len(Text1),
Len(Text2))
AnzahlTreffer = 0
If KleinGross = False Then
Text1 = UCase(Text1)
Text2 = UCase(Text2)
End If
For i = 1 To AnzahlZeichen
If Mid(Text1, i, 1) = Mid(Text2, i, 1) Then
AnzahlTreffer = AnzahlTreffer + 1
End If
Next i
Übereinstimmung = AnzahlTreffer / AnzahlZeichen
End Function
---snip---
Du kannst diese benutzerdefinierte Funktion namens "Übereinstimmung"
verwenden, wie jede andere Tabellenfunktion auch (Du findest Sie auch unter
Einfügen/Funktion/Kategorie Benutzerdefiniert):
=Übereinstimmung(A1;A2;FALSCH)
bzw.
=Übereinstimmung(A1;A2;WAHR)
Die ersten beiden Argumente sind die Texte (bzw. - wie hier - Bezüge zu den
Texten) und als dritten Parameter kannst Du angeben, ob zwischen Groß- und
Kleinschreibung unterschieden werden soll (WAHR) oder nicht (FALSCH).
Hope it helps und
sommerliche Grüße aus Wien (bzw. Umgebung),
-Robert Gelbmann-
versuch's mal mit folgender benutzerdefinierter Funktion:
Function Text_Ident(Text1, Text2)
x = 0
Länge = Len(Text1)
For i = 1 To Länge
Zeichen1 = Mid(Text1, i, 1)
Zeichen2 = Mid(Text2, i, 1)
If Zeichen1 = Zeichen2 Then
x = x + 1
End If
Next i
Text_Ident = 100 * x / Länge & " %"
End Function
Es werden die beiden Strings Text1 und Text2 Zeichen für Zeichen verglichen.
Sind beide Strings gleich lang, ist die Reihenfolge egal. Ansonsten wird der
Vergleich für alle Zeichen in Text1 durchgeführt, die Prozentangabe für die
Übereinstimmung bezieht sich auf die Länge von Text1.
Gruß
Martin Beck
Claudius Sailer <Clau...@sailer-online.de> schrieb in im Newsbeitrag:
1dv25xb.cr...@isdn219.s.netic.de...
>(1) Es gibt keine Tabellenfunktion, die den gewünschten Zweck erfüllt.
nachdem ihr euch darauf geeinigt habt, dass es für die Lösung keine
Lösung ohne benutzerdefinierte Funktion gibt, komm ich jetzt daher und
behaupte glatt das Gegenteil.
Diese Matrix-Formel (Eingabe mit Ctrl+Shift+Enter) sollte den Anteil der
identischen Zeichenpositionen liefern, bezogen auf den längeren der
beiden Texte in A1 und B1 ...
=MITTELWERT(WENN(SPALTE(1:1)<=MAX(LÄNGE(A1);LÄNGE(B1));WENN(TEIL(A1;SPAL
TE(1:1);1)=TEIL(B1;SPALTE(1:1);1);1;0)))
Probiert und staunt !
Servus aus Bayern, Tommy
Robert Gelbmann schrieb in Nachricht ...
> AnzahlTreffer = AnzahlTreffer + 1
> End If
> Next i
>
> Hallo ihr alle,
>
> >(1) Es gibt keine Tabellenfunktion, die den gewünschten Zweck erfüllt.
>
> nachdem ihr euch darauf geeinigt habt, dass es für die Lösung keine
> Lösung ohne benutzerdefinierte Funktion gibt, komm ich jetzt daher und
> behaupte glatt das Gegenteil.
Also ich danke Euch mal allen fuer Eure Tips. Ich werde das gleich mal
am Montag testen und dann hier berichten. So wie es jetzt aussieht gibt
es keine spezielle Funktion dafuer, aber einen Eurer Tips werde ich
sicherlich einsetzen :-)) Danke Euch
Claudius
Deine Formel ist nicht von schlechten Eltern!
Aber das Wort "Tabellenfunktion" habe ich schon bewußt eingesetzt! Daß es
mit Hilfe einer Matrixformel funktionieren würde, war mir schon klar,
allerdings hätte ich nicht gedacht, daß diese so kurz sein könnte ... :-))
Aber mit Unterscheidung zwischen Klein- und Großschreibung, wird sie schon
länger: ;-)
=MITTELWERT(WENN(SPALTE(1:1)<=MAX(LÄNGE(A1);LÄNGE(B1));WENN(IDENTISCH(TEIL(A
1;SPALTE(1:1);1);TEIL(B1;SPALTE(1:1);1));1;0)))
Hallo Thomas,
Genial!!
Schleifen in einer Tabellenfunktion!
Nachdem ich verstanden habe, wie du das gemacht hast, hier noch ein
Ansatz, um die Unterschiede der Zeichenketten darzustellen.
=SUMME(WENN(SPALTE(1:1)>MAX(LÄNGE(A1);LÄNGE(B1));0;
ABS(WENN(SPALTE(1:1)>LÄNGE(A1);0;CODE(TEIL(A1;SPALTE
(1:1);1)))-WENN(SPALTE(1:1)>LÄNGE(B1);0;CODE(TEIL(B1;SPALTE(1:1);1))))))
Dabei werden die Unterschiede der Zeichencodes summiert, das heißt, die Zahl ist
um so größer, je größer die Unterschiede sind und ist Null, wenn beide Zeichenketten
gleich sind.
MfG
Michael
ich bin ziemlich beeindruckt von Euren ausgefeilten Funktionen. Leider bin
ich mit Matrixfunktionen nicht so besonders geübt und habe deshalb jetzt
über eine Stunde darüber gebrütet, wie das mit der "Schleife" in der
Matrixfunktion funktioniert. Könntet Ihr Eure Funktionen vielleicht ein
wenig kommentieren ? Ich glaube, das würde bestimmt auch andere außer mir
interessieren.
Danke schon mal im voraus !
Gruß
Thomas Bauernfeind
Michael Schwimmer schrieb in Nachricht <7mtob0$sc3$1...@news01.btx.dtag.de>...
ich hab gerade nicht sehr viel Zeit, deshalb nur mal ein kurzes
Beispiel:
Die Matrixformel (in Z1S1-Schreibweise)
=SUMME(SPALTE(Z1S1:Z1S5))
liefert als Ergebnis 15. Bei der Berechnung werden alle Zellen das
angegebenen Bereichs Z1S1:Z1S5 durchlaufen und dafür jeweils die
angegebene Funktion SPALTE berechnet. Die einzelnen Ergebnisse werden
schließlich addiert (SUMME).
Analog liefert die Matrixformel
=SUMME(POTENZ(SPALTE(Z1S1:Z1S5);2))
als Ergebnis 55, nämlich die Summe der ersten 5 Quadratzahlen.
Eine häufige Anwendung für Matrixformeln ist eine Erweiterung der
SummeWenn- und AnzahlWenn-Funktionen auf mehrere Vergleichsargumente,
z.B. zählt die Matrixformel
=SUMME((Z1S2:Z8S2="a")*(Z1S3:Z8S3>=5))
die Zeilen im Bereich Z1:Z8, die in Spalte 2 ein "a" und in Spalte 3
eine Zahl größer gleich 5 enthalten (Beachte: die einzelnen Vergleiche
liefern eigentlich Wahr oder Falsch, werden jedoch durch die
Multiplikation automatisch in 1 oder 0 umgewandelt)
Dies als Anregung, probieren macht schlau.
Grüße aus Bayern, Tommy
Thomas Bauernfeind schrieb in Nachricht
<3793...@nntp.server.uni-frankfurt.de>...