Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Wie zwei Strings vergleichen ?

Wie zwei Strings vergleichen ?
Holger
Hallo,
trotz Hitze muss ich hier weitermachen und da ich schreibe, habe ich
wie so oft mal wieder ein Problem ;).
In einer Zelle steht:
DE,ES,PT
In einer anderen Zelle einer anderen Datei könnte stehen:
1 DE,PT,ES,FR,IT oder PT,ES,DE
Oder
2 DE,ES
Nun möchte ich prüfen, ob in der zweiten Zelle alle Werte enthalten sind, die in
der ersten Zelle vorhanden sind.
In dem Beispiel würde im Fall 1 ein OK erscheinen, im Fall 2 ein NICHT OK, da PT fehlt.
Mit InStr geht es ja nicht, weil sobald eines gefunden wird, die Bedingung ja bereits erfüllt ist.
Ich stehe auf dem Schlauch. Denn die Reihenfolge darf auch keine Rolle spielen, nur
ob die Werte alle da sind oder nicht.
Anzeige
Mit Split Arrays draus machen u.Match vwenden! orT
09.07.2010 16:29:09
Luc:-?
Gruß+schöWE, Luc :-?
AW: Wie zwei Strings vergleichen ?
09.07.2010 16:38:56
ransi
HAllo Holger
Versuchs mal so:
 ABCD
1KriterienZelle  
2DE,ES,PTDE,PT,ES,FR,ITWAHR 
3 DE,ESFALSCH 
4 PT,ES,DEWAHR 
5    

Formeln der Tabelle
ZelleFormel
C2=machs(B2;$A$2)
C3=machs(B3;$A$2)
C4=machs(B4;$A$2)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
ransi
Anzeige
UDF() vergessen....
09.07.2010 17:02:02
ransi
HAllo
Diesen Code in ein Modul:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit


Public Function machs(Zelle, Kriterien) As Boolean
Dim vntZ As Variant
Dim vntK As Variant
Dim L As Long
machs = True
vntZ = Split(Zelle.Value, ",")
vntK = Split(Kriterien.Value, ",")
For L = LBound(vntK) To UBound(vntK)
    If UBound(Filter(vntZ, vntK(L))) = -1 Then
        machs = False
        Exit Function
    End If
Next
End Function


ransi
Anzeige
Lösung ohne VBA - trickreich und kniffelig
09.07.2010 17:46:05
NoNet
Hallo Holger,
nur der Vollständigkeit halber : es gibt auch eine Lösung ohne VBA, die allerdings recht "tricky" und knifflig ist.
Nehmen wir an, Du hast folgende Tabelle :
AB
1
2
3
4
5
6

Nun erstellst Du zunächst per Tastenkombination Strg+F3 einen Bereichsnamen :
Name : LaenderArray
Bezieht sich auf :=AUSWERTEN("{"&ZEICHEN(34)&WECHSELN($A$2;",";ZEICHEN(34)&"."&ZEICHEN(34))&ZEICHEN(34)&"}")
Bestätige diesen Namen mit  
Der Name enthält nun eine MATRIX (ARRAY) mit den nach Komma getrennten Länderkürzeln.
Gib nun in C2 folgende Funktion ein und bestätige diese mit Strg+Shift+ENTER (=MATRIX-Funktion) und kopiere sie dann soweit wie benötigt nach unten :

=SUMME(--ISTZAHL(SUCHEN(","&GLÄTTEN(INDEX(LaenderArray;ZEILE(INDIREKT("1:"&ANZAHL2(LaenderArray)));)) &",";","&WECHSELN(B2;" ";"")&",")))=ANZAHL2(LaenderArray)

Diese Funktion prüft, ob jedes einzelne Element des LaenderArray in der Zelle B2 (durch Komma getrennt, Leerzeichen entfernt) vorhanden ist.
Sobald die Anzahl der in B2 übereinstimmenden Länderkürzel mit denen des LaenderArray übereinstimmt, ist das Ergebnis WAHR, ansonsten FALSCH !
Hier ein Beispiel :
ABC
1
2
3
4
5
6

MATRIX-Funktionen (mit Strg+Shift+ENTER bestätigen)
ZelleFormel
C2   {=SUMME(--ISTZAHL(SUCHEN(","&GLÄTTEN(INDEX(LaenderArray;ZEILE(INDIREKT("1:"&ANZAHL2(LaenderArray)));))&",";","&WECHSELN(B2;" ";"")&",")))=ANZAHL2(LaenderArray) 
C3   {=SUMME(--ISTZAHL(SUCHEN(","&GLÄTTEN(INDEX(LaenderArray;ZEILE(INDIREKT("1:"&ANZAHL2(LaenderArray)));))&",";","&WECHSELN(B3;" ";"")&",")))=ANZAHL2(LaenderArray) 
C4   {=SUMME(--ISTZAHL(SUCHEN(","&GLÄTTEN(INDEX(LaenderArray;ZEILE(INDIREKT("1:"&ANZAHL2(LaenderArray)));))&",";","&WECHSELN(B4;" ";"")&",")))=ANZAHL2(LaenderArray) 
C5   {=SUMME(--ISTZAHL(SUCHEN(","&GLÄTTEN(INDEX(LaenderArray;ZEILE(INDIREKT("1:"&ANZAHL2(LaenderArray)));))&",";","&WECHSELN(B5;" ";"")&",")))=ANZAHL2(LaenderArray) 
C6   {=SUMME(--ISTZAHL(SUCHEN(","&GLÄTTEN(INDEX(LaenderArray;ZEILE(INDIREKT("1:"&ANZAHL2(LaenderArray)));))&",";","&WECHSELN(B6;" ";"")&",")))=ANZAHL2(LaenderArray) 

Und das Ganze nochmal als Screenshot :
Userbild
Gruß und schönes WE, NoNet
Anzeige
Lösung ohne VBA - ohne Trick
10.07.2010 18:53:03
FP
Hallo NoNet,
Tabelle3
 ABC
1DE, PT, ESFR, DE, IT, PT, ES, DKWAHR
2DE, PT, ESFR, DE, IT, ES, DKFALSCH
Formeln der Tabelle
C1 : {=ANZAHL(SUCHEN(LINKS(TEIL(WECHSELN(A1;", ";""); SPALTE(1:1)*2-1;2)&"  ";2); WECHSELN(B1;", ";"")))=LÄNGE(WECHSELN(A1;", ";""))/2}
C2 : {=ANZAHL(SUCHEN(LINKS(TEIL(WECHSELN(A2;", ";""); SPALTE(2:2)*2-1;2)&"  ";2); WECHSELN(B2;", ";"")))=LÄNGE(WECHSELN(A2;", ";""))/2}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Servus aus dem Salzkammergut
Franz
Anzeige
@FP: Ohne VBA - ohne Trick - ohne Sinn ?
10.07.2010 19:14:59
NoNet
Hey FP,
sorry, das "ohne Sinn" aus dem Betreff nehme ich natürlich zurück, aber so ganz einsatztauglich ist Deine Lösung dann aber doch nicht - siehe Zeilen 5 und 6 :
ABCD
1
2
3
4
5
6

Aber selbstverständlich traue ich Dir zu, dass Du diesen Fauxpas noch beheben kannst und wirst ;-))
Gruß, NoNet
Anzeige
immer diese Nörgler :-D
10.07.2010 19:33:04
FP
Hallo NoNet,
{=ANZAHL(FINDEN(LINKS(TEIL(WECHSELN(A1;", ";"");SPALTE(1:1)*2-1;2)&" ";2);WECHSELN(B1;", ";""))) =LÄNGE(WECHSELN(A1;", ";""))/2+(A1="") }
FINDEN statt SUCHEN ist hier angesagt, sonst würde ja DE = de sein, und DE ist für mich - trotz des verpassten Finales - wieder einmal ein großartiges Turnier gelungen.
Ich weiß: ihr Deutschen werdet das anders sehen, aber ich als Österreicher kann nur neidisch zu Euch hinüber blicken, wir qualifizieren uns ja nicht einmal :-(
Und ab Herbst müssen wir ja in der EM-Quali gegen Euch antreten, ich fürchte, da werden unsere Spieler ein ähnliches Bauchgefühl haben wie Eure gegen Spanien :D
Aber FALLS wir gegen Euch auch nur 1 Punkt machen, dann sind WIR die GRÖSSTEN!!! ( Zumindest ist es für einen kleinen Österreicher als wäre er Weltmeister geworden :D )
Servus aus dem Salzkammergut
Franz
Anzeige
Den 1 Punkt gönne ich euch, aber...
10.07.2010 20:06:39
NoNet
Hey Franz,
ich gönne Austria den 1 Heimpunkt gegen D - damit sollte D doch hoffentlich dennoch die EM2012-Quali schaffen...
Das Problem ist übrigens noch nicht gelöst :
nicht "de" oder "DE" oder "dE" oder "De" ist das Problem, sondern z.B. "ES" und "EST" oder "DE" und "ABCDE"....
Es sollten doch tatsächlich nur die Nationen verglichen werden, die auch tatsächlich in Spalte A vorhanden sind.
Und auch wenn String-mäßig "ES" in "EST" steckt, so liegt Spanien selbst geographisch nicht in Estland ;-)
So, und jetzt muss D erst noch gegen URU den 3.Platz sichern...
Gruß, NoNet
Anzeige
AW: Den 1 Punkt gönne ich euch, aber...
10.07.2010 20:33:25
FP
Hallo NoNet,
also:
1) DE ist der ISO-Code für Deutschland, und der ISO-Code für Estland ist EE - so wie alle ISO-Ländercodes nur aus 2 Buchstaben bestehen
2) EST ist das KFZ-Kz von Estland, das wäre dann D für Deutschland
3) man kann sich bei Suchbegriffen ja einmal verschreiben, dann gibt es auch manchmal kein Leerzeichen oder mehr als 1 Leerzeichen hinter einem Trennzeichen wie z.B. "," ( aber das Trennzeichen muss vorhanden sein )
all diese "Probleme" sollten mit dieser Formel keine sein
~f~
{=ANZAHL(FINDEN(LINKS(TEIL(formatiere_A&", ";SPALTE(1:1)*4-3;4)&" , ";4);B1))=(LÄNGE(formatiere_A) +2) /4}
und formatiere_A ist hier auch ein Name und bezieht sich auf:
=WECHSELN(WECHSELN(WECHSELN(Tabelle3!$A1;" ";" ");",";", ");" ";" ")
Und jetzt nichts wie ab zum Spiel und das Ziel muss heißen: Europa belegt Platz 1 - 3 bei der WM !
Jetzt wo ihr wieder einen MÜLLER habt ( wenn er auch nicht Gerd heißt ), sollte das doch zu schaffen sein :-)
Servus aus dem Salzkammergut
Franz
Anzeige
OT : Thomas Müller got it...
11.07.2010 00:37:41
NoNet
Hey Franz,
unabhängig sonstiger irdischer Probleme, denen ich gerade nicht folgen kann :
I think "Mueller got it" - und das ist JETZT() das Wichtigste ;-)
Gruß und "Good luck" für die EM-Quali,
NoNet
und es geht sogar viel kürzer...
10.07.2010 19:45:49
FP
Hallo NoNet,
... unter der Bedingung, dass das Format mit Trennung durch ", " ohne Ausnahme gilt - aber diese Bedingung gilt ohnehin auch bei meiner bisherigen Lösung auch.
{=ANZAHL(FINDEN(LINKS(TEIL(A1&", ";SPALTE(1:1)*4-3;4)&" , ";4);B1))=(LÄNGE(A1)+2)/4+(A1="")}
Servus aus dem Salzkammergut
Franz
Anzeige
und dann kann man sogar...
10.07.2010 19:48:50
FP
Hallo NoNet,
... auf die zusätzliche Prüfung auf A ist leer verzichten :-)
{=ANZAHL(FINDEN(LINKS(TEIL(A4&", ";SPALTE(4:4)*4-3;4)&" , ";4);B4))=(LÄNGE(A4)+2)/4}
Servus aus dem Salzkammergut
Franz
unklar
11.07.2010 15:34:59
Erich
Hi Franz,
deine Formel habe ich wohl nicht wirklich verstanden - so liefert sie bei mir in E4:E5 falsche Ergebnisse.
Ich stell mal meine Alternativen in Spalten C und D:
 ABCDE
1KriterienZelleFormel1 Formel2 Franz
2DE, ES, PTDE, PT, ES, FR, ITWAHRWAHRWAHR
3DE, ES, PTDE, ESFALSCHFALSCHFALSCH
4DE, ES, PTPT, ES, DEWAHRWAHRFALSCH
5DE, ES, PTES, DE, PTWAHRWAHRFALSCH

Formeln der Tabelle
ZelleFormel
C2{=ANZAHL(FINDEN(TEIL(A2;SPALTE(A2:INDEX(1:1;LÄNGE(A2)/4+0,5))*4-3;2); B2))=(LÄNGE(A2)+2)/4}
D2{=ANZAHL(FINDEN(TEIL(A2&", ";SPALTE(A2:INDEX(2:2;LÄNGE(A2)/4+0,5))*4-3;2); B2&", "))=(LÄNGE(A2)+2)/4}
E2{=ANZAHL(FINDEN(LINKS(TEIL(A2&", ";SPALTE(2:2)*4-3;4)&" , ";4); B2))=(LÄNGE(A2)+2)/4}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
Matrix verstehen


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
ganz klar...
12.07.2010 08:07:31
FP
Hallo Erich,
es fehtl ja auch das 2. &", " ( für Spalte B )
{=ANZAHL(FINDEN(LINKS(TEIL(A2&", ";SPALTE(2:2)*4-3;4)&" , ";4); B2&", "))=(LÄNGE(A2)+2)/4}
Servus aus dem Salzkammergut
Franz
;
Anzeige
Anzeige

Infobox / Tutorial

Strings in Excel vergleichen: Schritt-für-Schritt-Anleitung


Schritt-für-Schritt-Anleitung

Um zwei Strings in Excel zu vergleichen und zu überprüfen, ob alle Werte einer Liste in einer anderen Liste enthalten sind, kannst du die folgende Methode verwenden:

  1. Daten eingeben: Gib die Werte in zwei Zellen ein. Zum Beispiel:

    • A1: DE,ES,PT
    • B1: DE,PT,ES,FR,IT
  2. VBA-Funktion erstellen: Öffne den VBA-Editor mit ALT + F11 und füge ein neues Modul hinzu. Kopiere den folgenden Code in das Modul:

    Function machs(Zelle As Range, Kriterien As Range) As Boolean
       Dim vntZ As Variant
       Dim vntK As Variant
       Dim L As Long
       machs = True
       vntZ = Split(Zelle.Value, ",")
       vntK = Split(Kriterien.Value, ",")
       For L = LBound(vntK) To UBound(vntK)
           If UBound(Filter(vntZ, Trim(vntK(L)))) = -1 Then
               machs = False
               Exit Function
           End If
       Next L
    End Function
  3. Formel anwenden: Gehe zurück zu Excel und verwende die Formel in einer Zelle, um das Ergebnis zu überprüfen:

    • In C1: =machs(B1, A1)
  4. Ergebnis interpretieren: Wenn das Ergebnis WAHR ist, sind alle Länder aus A1 in B1 enthalten. Ansonsten zeigt es FALSCH.


Häufige Fehler und Lösungen

  • Fehler: FALSCH bei korrekten Werten: Vergewissere dich, dass die Strings korrekt formatiert sind und keine zusätzlichen Leerzeichen enthalten. Benutze Trim in der Funktion, um Leerzeichen zu entfernen.

  • Fehler: Typenkonflikte: Stelle sicher, dass du die richtige Zellreferenz in der Formel verwendest. Die Zellreferenzen sollten korrekt sein, um die gewünschten Werte zu vergleichen.


Alternative Methoden

Falls du keine VBA-Lösungen verwenden möchtest, kannst du auch Formeln nutzen:

  1. MATRIX-Funktion: Verwende die Formel:

    =SUMME(--ISTZAHL(SUCHEN(GLÄTTEN(INDEX(LaenderArray, ZEILE(INDIREKT("1:"&ANZAHL2(LaenderArray)))), ","; WECHSELN(B1; " "; "")))) = ANZAHL2(LaenderArray)

    Diese Formel prüft, ob alle Länderkürzel in B1 vorhanden sind.

  2. TEXTVERKETTEN: Mache Gebrauch von TEXTVERKETTEN, um die Strings zu vergleichen, indem du sie in eine Matrix umwandelst.


Praktische Beispiele

Hier sind einige Beispiele, wie du Excel verwenden kannst, um Strings zu vergleichen:

Kriterien Vergleichsländer Ergebnis
DE,ES,PT DE,PT,ES,FR,IT WAHR
DE,ES,PT DE,ES FALSCH
DE,ES,PT PT,ES,DE WAHR

Verwende die oben genannten Formeln, um diese Vergleiche in Excel durchzuführen.


Tipps für Profis

  • ISO Ländercodes: Achte darauf, dass du die ISO-Ländercodes korrekt verwendest, um Missverständnisse zu vermeiden, insbesondere wenn du Strings wie DE und EST vergleichst.

  • Strings vergleichen: Wenn du Strings in Excel vergleichen möchtest, stelle sicher, dass die Formatierung einheitlich ist. Du kannst WECHSELN nutzen, um unerwünschte Leerzeichen zu entfernen.

  • VBA optimieren: Optimiere deine VBA-Funktion, indem du Fehlerbehandlungen einfügst, um robuster gegen ungültige Eingaben zu sein.


FAQ: Häufige Fragen

1. Wie kann ich Strings in Excel vergleichen, ohne VBA zu nutzen?
Du kannst die Funktion ISTZAHL und SUCHEN verwenden, um zu überprüfen, ob ein String in einem anderen enthalten ist.

2. Was tun, wenn die Groß- und Kleinschreibung beim Vergleich eine Rolle spielt?
Verwende die Funktion FINDEN anstelle von SUCHEN, da FINDEN die Groß- und Kleinschreibung beachtet.

3. Wie kann ich Strings in Excel zusammenführen?
Benutze die Funktion TEXTVERKETTEN, um mehrere Strings in einer Zelle zusammenzuführen.

4. Kann ich mehrere Strings miteinander vergleichen?
Ja, du kannst mehrere Strings vergleichen, indem du sie in eine Liste oder Matrix umwandelst und entsprechende Funktionen anwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige