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

VBA | Zelleninhalt mit Liste vergleichen

VBA | Zelleninhalt mit Liste vergleichen
26.01.2021 23:00:57
Tim
Guten Tag,
ich habe eine Tabelle, in welcher untersucht wird, ob ein Zeile mit 3 Spalten "RD" enthält.
Wenn nicht sollen diese Zeilen im Bereich B25:B40 gespeichert werden. Der Code funktioniert _ auch soweit (viel zusammenkopiert, da ich nur Halbwissen in VBA habe):

Sub textsuche2()
'nList = Falschparker
'xList = Richtigparker
Dim doppelZeile As Boolean, ausgabeKeineTreffer As Boolean
Dim zeile As Long, treffer As Long, t As Long, nTreffer As Long, trefferzeile As Long
Dim bereich As Range, zelle As Range, ausgabeStart As Range
Dim sText As String, xList As String, eintrag As String, ausBlatt As String, ausBereich As  _
String, nList As String
ausBlatt = ActiveSheet.Name
ausBereich = "B6:D14, B18:D22"          'welchen bereich untersuchen ob "RD/P"
sText = "RD/P"
doppelZeile = False
'Range("B25:B35").Value = ""   'Wo Ergebnisse reingeschreiben werden: Value löschen
Set ausgabeStart = ActiveWorkbook.Sheets(ausBlatt).Range("B25")      ' Wo Ergebnisse  _
reinschreiben
ausgabeKeineTreffer = True
Set bereich = ActiveWorkbook.Sheets(ausBlatt).Range(ausBereich)
treffer = 0
For Each zelle In bereich
zeile = zelle.Row
'neuer Eintrag beim Beginn einer neuen Zeile im Schleifendurchlauf hinzufügen
If zelle.Column - bereich.Column = 0 Then
If nList  "" Then
nList = nList & ", "
End If
nList = nList & ActiveWorkbook.Sheets(ausBlatt).Range("E" & zelle.Row)        'welche    _
_
_
spalte übergeben
nTreffer = nTreffer + 1
End If
'bisheriger
If InStr(1, zelle.Value, sText) > 0 And (trefferzeile  zeile Or doppelZeile) Then
If xList  "" Then
xList = xList & ", "
End If
xList = xList & ActiveWorkbook.Sheets(ausBlatt).Range("E" & zelle.Row)
trefferzeile = zelle.Row
treffer = treffer + 1
'eintrag aus Liste leerer Zellen entfernen
If InStr(1, nList, ",") = 0 Then
nList = ""
Else
nList = Left(nList, InStr(1, Application.WorksheetFunction.Substitute(nList, ",", "@ _
_
_
@@", Len(nList) - Len(Application.WorksheetFunction.Substitute(nList, ",", ""))), "@@@") - 1)
End If
nTreffer = nTreffer - 1
End If
Next zelle
'Ausgabe der Liste(n)
If treffer = 0 Then
MsgBox "keine Treffer."
Else
'MsgBox "xList: " & xList & Chr(10) & "nList: " & nList    'Ausgabefenster anzeigen
If ausgabeKeineTreffer Then
xList = nList
treffer = nTreffer
End If
For t = 1 To nTreffer
If t      If Range("B25").Value  eintrag And Range("B26").Value  eintrag And Range("B27") _
_
_
.Value  eintrag ...... Then
ausgabeStart.Offset(t - 1, 0) = eintrag
End If
Next t
End If
End Sub


In einer der letzten Zeilen vom Code, will ich sagen, dass wenn ein Wert aus der Liste nList schon vorher in B25:B40 steht, dieser nicht ausgegen werden soll. Meine Umsetzteung ist komplett falsch, da manche Werte dann trotzdem überschrieben werden. Somit muss die Liste nList schon vorher mit dem Berecih B24:B40 verglichen werden...aber wie bzw. wo?
Wie kann ich dies realisieren?
Besten Dank im Voraus

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA | Zelleninhalt mit Liste vergleichen
27.01.2021 00:25:01
ralf_b
du kannst das mit der range.find() methode herausfinden. damit durchsuchst du einen Bereich nach einem Suchbegriff.
Ich kapiere nicht so recht was du mit dem Codeteil über dem Fettgedruckten erreichen willst?
wenn nlist aus mehreren möglichen Begriffen besteht müßte das nochmal genauer betrachtet werden. Aber durch reines Lesen von mager kommentierten Code kommt man da nicht sehr weit. Wie wäre es mit einer Beispieldatei?
gruß
rb
Anzeige

323 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige