Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA 2 Spalten vergleichen und markieren

VBA 2 Spalten vergleichen und markieren
26.07.2021 15:06:20
Lisa
Hallo zusammen,
ich habe eine Frage, bei der ich nicht mehr weiterkomme.
Ich habe in Spalte A2 bis A++ Texte stehen, von denen ein Bruchteil irgendwo in Spalte B2 bis B++ vorkommen kann.
Bsp:
In A2 steht "Hallo dies ist ein Test. Er wird versendet an Test@test.de"
Irgendwo in Spalte B steht in einer Zelle z. B. "Test@Test.de"
Wenn der Wert aus Spalte B genau so auch in Spalte A zu finden ist, dann soll die Zelle daneben in Spalte C mit einem "X" markiert werden.
Hier mein Ansatz:
Option Explicit

Public Sub MailSuchen()
Dim lngRow As Long
Dim avntTemp As Variant, vntItem As Variant
For lngRow = 2 To Cells(Rows.Count, 1).End(xlUp).Row
avntTemp = Split(Cells(lngRow, 1).Value)
For Each vntItem In avntTemp
If InStr(1, Cells(lngRow, 2).Value, vntItem, vbTextCompare) > 0 Then
Range("C2") = "x"
'Range("C2" & Rows.Count).End(xlUp).Row = "X"
End If
Next
Next
End Sub
Mit dem Code habe zwei Probleme:
1. Ich bekomme das dynamische schreiben des "X" nicht hin.
2. Es wird auch ein "X" gesetzt wenn nur ein Teil des gesuchten Textes aus B in A vorkommt.
Heißt: Steht in Spalte B "st@Test.de" wird ein trotzdem "X" gesetzt, dies soll aber nur passieren wenn dort exakt "Test@Test.de" steht
Hat jemand eine Idee, ich beiße mir schon seit Stunden die Zähne an dem Problem aus.
Vielen Dank und viele Grüße
Lisa
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA 2 Spalten vergleichen und markieren
26.07.2021 16:12:51
Rudi
Hallo,
teste mal:

Public Sub MailSuchen()
Dim lngRow As Long
Dim avntTemp As Variant, vntItem As Variant
Application.ScreenUpdating = False
For lngRow = 2 To Cells(Rows.Count, 1).End(xlUp).Row
Cells(lngRow, 3) = ""
avntTemp = Split(Cells(lngRow, 1).Value)
For Each vntItem In avntTemp
If Not IsError(Application.Match(vntItem, Columns(2), 0)) Then
Cells(lngRow, 3) = "X"
End If
Next vntItem
Next lngRow
End Sub
Gruß
Rudi
Anzeige
AW: VBA 2 Spalten vergleichen und markieren
26.07.2021 17:12:20
Lisa
Hallo Rudi,
Danke schon Mal für die Hilfe.
Die Lösung ist nah dran aber noch nicht ganz richtig.
Aktuell ist es so, dass das X in Spalte C geschrieben wird, wenn in Spalte A und B ein gleicher Inhalt gefunden wird. Allerdings wird das X dorthin geschrieben, wo der Inhalt in Spalte A und nicht in Spalte B steht. Im Prinzip muss das nur getauscht werden, ich bekomme aber immer wieder einen Laufzeitfehler, wenn ich das versuche.
Ich habe mal eine Beispielmappe mit dem IST-Zustand und SOLL-Zustand, in der man das Problem schnell erkennt.
https://www.herber.de/bbs/user/147318.xlsm
Über weitere Hilfe bin ich dankbar.
Liebe Grüße
Lisa
Anzeige
AW: VBA 2 Spalten vergleichen und markieren
27.07.2021 08:37:01
Rudi
Hallo,

Public Sub MailSuchen()
Dim lngRow As Long
Dim avntTemp As Variant, vntItem As Variant
Dim vntRow
Application.ScreenUpdating = False
Columns(3).ClearContents
For lngRow = 2 To Cells(Rows.Count, 1).End(xlUp).Row
avntTemp = Split(Cells(lngRow, 1).Value)
For Each vntItem In avntTemp
vntRow = Application.Match(vntItem, Columns(2), 0)
If Not IsError(vntRow) Then
Cells(vntRow, 3) = "X"
End If
Next vntItem
Next lngRow
End Sub
Gruß
Rudi
Anzeige
AW: VBA 2 Spalten vergleichen und markieren
27.07.2021 08:46:51
Lisa
Hallo Rudi,
vielen Dank, das funktioniert super und den Code kann ich auch nachvollziehen.
Viele Grüße
Lisa
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige