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

Stringvergleich funktioniert nicht

Forumthread: Stringvergleich funktioniert nicht

Stringvergleich funktioniert nicht
15.01.2019 09:18:56
Jürgen
Hallo zusammen,
Ich habe folgendes Problem, ich hoffe ihr könnt mir helfen.
Ich lese 2 Strings ein und will diese miteinander vergleichen.
Die Strings sind laut Lokal-Fenster absolut ident und haben auch den selben Datentyp (String). Trotzdem wird die If Bedingung nicht erfüllt.
Wenn man die beiden Strings mit StrComp vergleicht, so wird ausgegeben, dass diese sich unterscheiden. Dies tun sie aber nicht? Woran kann dies liegen?
Habe die üblichen Dinge wir Leerzeichen Trimmen usw. versucht, daran liegt es nicht.
Anbei der Code, ich hoffe ihr könnt mir helfen!
lg, Jürgen
Sub Makro9()
Dim ArtikelFinden As String
Dim ArtikelSuchen As String
ArtikelSuchen = Worksheets("Bestand").Cells(4, 1)          'String: "0224000"
ArtikelFinden = Worksheets("Import Ldbg").Cells(3, 2)      'String: "0224000"
Vergleich1 = StrComp(ArtikelSuchen, ArtikelFinden, 0)      'Ergebnis: 1
Vergleich2 = StrComp(ArtikelSuchen, ArtikelFinden, 1)      'Ergebnis: -1
If ArtikelSuchen = ArtikelFinden Then                      'Bedingung wird nicht erfüllt?
Ausgabe = MsgBox("Artikel gefunden!", vbOKOnly)
End If
End Sub

Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Das Ergebnis …
15.01.2019 09:32:57
RPP63
… von StrComp() muss 0 sein, wenn die Texte tatsächlich gleich sind!
Da bei Dir etwas anderes heraus kommt, sind sie eben nicht gleich.
Du solltest mal die Datei mit lediglich den beiden Zellen hochladen.
Dann kann man sich das näher anschauen.
Gruß Ralf
AW: Das Ergebnis …
15.01.2019 09:41:41
Luschi
Hallo Jürgen,
wenn in der 1. Zelle der Wert so eingegeben wurde: '0224000
und in der 2. Zelle 224000 und diese Zelle benutzerdefiniert formatiert wurde: 0000000
dann sehen die beiden Werte zwar gleich aus, sind aber inhaltlich nicht das selbe.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Stringvergleich funktioniert nicht
15.01.2019 09:43:35
Daniel
Hi
dazu müsste man jetzt wissen, was wirklich in den Zellen steht, dh du solltest mal die Datei hochladen.
oder du lässt mal dieses Makro zum Texten laufen.
Dieser Code zeigt dir im Direktfenster nebeneinander die ASCII-Codes der Zeichen der beiden Variablen.
Wenn die Zahlenwerte an irgendeiner Stelle nicht gleich sind, hast du deine Abweichung gefunden.
Sub Makro9()
Dim ArtikelFinden As String
Dim ArtikelSuchen As String
Dim i As Long
Dim L As Long
ArtikelSuchen = Worksheets("Bestand").Cells(4, 1)          'String: "0224000"
ArtikelFinden = Worksheets("Import Ldbg").Cells(3, 2)      'String: "0224000"
If Len(ArtikelFinden)  Len(ArtikelSuchen) Then
MsgBox "Unterschiedlich lang!"
Else
For i = 1 To Len(ArtikelSuchen)
Debug.Print "pos" & i & ":", AscW(Mid(ArtikelFinden, i, 1)), AscW(Mid(ArtikelSuchen, i, 1))
Next
End If
End Sub
Gruß Daniel
Anzeige
AW: Stringvergleich funktioniert nicht
15.01.2019 09:59:02
Jürgen
Hallo Ralf,
Hallo Daniel,
Vielen Dank für eure Rückmeldungen!
Ich finde den Fehler aber immer noch nicht, ich denke ich stehe auf dem Schlauch.
Anbei die Datei.
https://www.herber.de/bbs/user/126766.xlsm
Ev. seht ihr den Grund.
lg, Jürgen
Anzeige
AW: Stringvergleich funktioniert nicht
15.01.2019 10:13:36
RPP63
In Bestand steht tatsächlich die Textzahl 0224000
In Import beginnt die "Zahl" mit dem Zeichen 31, am Ende stehen neun Leerzeichen Zeichen(32)
Da ist nix gleich! ;)
AW: Stringvergleich funktioniert nicht
15.01.2019 10:16:47
RPP63
Ach so:
Die unerwünschten Zeichen bekommst Du so weg:
=GLÄTTEN(SÄUBERN(dieZelle))
AW: Stringvergleich funktioniert nicht
15.01.2019 10:30:27
Jürgen
Hallo RPP63,
Ja, jetzt funktioniert es - vielen Dank!
Das GLÄTTEN war nicht der Grund, ich hatte den String zuvor auch schon mit LTRIM und RTRIM bearbeitet.
Das SÄUBERN hast den Ausschlag gegeben :-)
Vielen Dank!!
Gruß, Jürgen
P.S. Ich brauche das Herber Forum nicht oft, aber wenn, dann habe ich noch jedes mal innerhalb von wenigen Stunden eine Hilfe bekommen. Tolles Forum, ganz großes Kompliment an alle Beteiligten!!!
Anzeige
AW: Stringvergleich funktioniert nicht
15.01.2019 10:23:32
UweD
Hallo
so?
 ArtikelFinden = WorksheetFunction.Clean(Trim(ArtikelFinden))
LG UweD
AW: Stringvergleich funktioniert nicht
15.01.2019 10:57:38
Jürgen
Hallo Uwe,
Ja, funktioniert. Ziemlich elegant gelöst, vielen Dank!
lg, Jürgen
AW: Stringvergleich funktioniert nicht
15.01.2019 11:57:19
Luschi
Hallo Jürgen,
trotzdem ist des Besser, den vorhandenen Datenbestand zu säubern, als dann mit Zusatzfunktionalitäten erst in der Auswertung anzufangen, mit 'Hängen & Würgen' die Ausgangsdaten umzubiegen, denn damit wird ja nicht das Problem beseitigt, sondern nur vertagt.
Gruß von Luschi
aus klein-Paris
Anzeige
Sehe ich genauso, Luschi!
15.01.2019 12:38:25
RPP63
Schließlich heißt das eine Blatt ja wohl nicht von ungefähr Import …
Genau da muss man ansetzen: "sauberer" Import (mittels PowerQuery?)
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Stringvergleich in Excel: Probleme erkennen und beheben


Schritt-für-Schritt-Anleitung

Um Strings in Excel VBA zu vergleichen, kannst du die Funktion StrComp verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung, wie du dies umsetzen kannst:

  1. Öffne Excel und gehe zum VBA-Editor (drücke ALT + F11).

  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject", dann "Einfügen" > "Modul").

  3. Kopiere den folgenden Code in das Modul:

    Sub StringVergleich()
        Dim ArtikelFinden As String
        Dim ArtikelSuchen As String
        ArtikelSuchen = Worksheets("Bestand").Cells(4, 1)          'String: "0224000"
        ArtikelFinden = Worksheets("Import Ldbg").Cells(3, 2)      'String: "0224000"
    
        If StrComp(ArtikelSuchen, ArtikelFinden, vbTextCompare) = 0 Then
            MsgBox "Artikel gefunden!", vbOKOnly
        Else
            MsgBox "Artikel nicht gefunden.", vbOKOnly
        End If
    End Sub
  4. Führe das Makro aus, um die Strings zu vergleichen.


Häufige Fehler und Lösungen

Bei der Verwendung von StrComp oder einem einfachen Stringvergleich in Excel kann es zu unerwarteten Ergebnissen kommen. Hier sind einige häufige Fehler und deren Lösungen:

  • Leerzeichen oder unsichtbare Zeichen: Oft enthalten die Strings Leerzeichen oder ausgeblendete Zeichen. Verwende die Funktion Trim und Clean, um diese zu entfernen:

    ArtikelFinden = WorksheetFunction.Clean(Trim(ArtikelFinden))
  • Unterschiedliche Datentypen: Stelle sicher, dass beide Variablen den Datentyp "String" haben. Ein Vergleich zwischen verschiedenen Datentypen führt zu unerwarteten Ergebnissen.

  • ASCII-Zeichen: Nutze den folgenden Code, um die ASCII-Werte der Zeichen zu überprüfen:

    For i = 1 To Len(ArtikelSuchen)
        Debug.Print "pos" & i & ":", AscW(Mid(ArtikelFinden, i, 1)), AscW(Mid(ArtikelSuchen, i, 1))
    Next

Alternative Methoden

Wenn StrComp nicht die gewünschten Ergebnisse liefert, kannst du folgende Alternativen ausprobieren:

  • Direkter Vergleich: Anstelle von StrComp kannst du auch einfach die Gleichheitsprüfung verwenden:

    If ArtikelSuchen = ArtikelFinden Then
        MsgBox "Artikel gefunden!"
    End If
  • Power Query: Für eine saubere Datenaufbereitung und -vergleich kannst du auch Power Query verwenden, um Daten vor dem Vergleich zu bereinigen.


Praktische Beispiele

Hier sind einige praktische Beispiele zur Verwendung von StrComp und zum Vergleichen von Strings in Excel:

  1. Einfacher Vergleich:

    If StrComp("Hallo", "Hallo", vbTextCompare) = 0 Then
        MsgBox "Strings sind gleich!"
    End If
  2. Vergleich mit Trimmen:

    Dim a As String, b As String
    a = Trim("  Hallo  ")
    b = Trim("Hallo")
    
    If StrComp(a, b, vbTextCompare) = 0 Then
        MsgBox "Strings sind gleich!"
    End If

Tipps für Profis

  • Verwende vbTextCompare für einen fallunabhängigen Vergleich, um sicherzustellen, dass Groß- und Kleinschreibung ignoriert werden.

  • Nutze die Debug.Print-Funktion, um Werte während der Ausführung zu überprüfen. So kannst du schnell herausfinden, wo der Fehler liegt.

  • Halte deine Daten sauber: Achte darauf, dass deine Quelldaten, wie in den Beispielen, frei von unerwünschten Zeichen sind.


FAQ: Häufige Fragen

1. Warum funktioniert mein Stringvergleich nicht, obwohl die Strings gleich aussehen?
Oft sind unsichtbare Zeichen oder Leerzeichen verantwortlich. Nutze Trim und Clean, um diese zu entfernen.

2. Was ist der Unterschied zwischen StrComp und dem direkten Vergleich?
StrComp bietet mehr Flexibilität, z.B. bei der Festlegung der Groß- und Kleinschreibung. Der direkte Vergleich ist einfacher, aber weniger flexibel.

3. Wie kann ich sicherstellen, dass zwei Strings tatsächlich identisch sind?
Verwende StrComp und überprüfe die ASCII-Codes der Zeichen, um sicherzustellen, dass sie übereinstimmen.

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