Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1840to1844
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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
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
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
Anzeige

318 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige