Hallo Excel-VBA Freunde,
ich stehe seit einigen Stunden auf dem Schlauch und komme einfach nicht weiter. Folgender Sachverhalt liegt vor:
Tabelle1
ID |
Einsatz |
Titel |
Name |
Vorn |
Straße |
Hausnr. |
PLZ |
Ort |
Mobil |
Dienstlich |
Festnetz |
Mailadresse |
111 |
WV |
Dr. |
Apfelbaum |
Apfel |
Apfelstr. |
1 |
123 |
Apfelort |
456 |
789 |
000 |
Apfel@... |
111 |
STWV |
|
Birnenbaum |
Birne |
Birnenstr. |
2 |
234 |
Birnenort |
789 |
111 |
222 |
Birne@... |
112 |
WV |
Prof. |
|
|
|
|
|
|
|
|
|
|
112 |
STWV |
|
|
|
|
|
|
|
|
|
|
|
113 |
WV |
|
|
|
|
|
|
|
|
|
|
|
113 |
STWV |
|
|
|
|
|
|
|
|
|
|
|
114 |
WV |
Dr. |
|
|
|
|
|
|
|
|
|
|
115 |
STWV |
|
|
|
|
|
|
|
|
|
|
|
Tabelle2
ID |
Titel_WV |
Name_WV |
Vorn_WV |
Straß_WV |
Hausnr_WV |
PLZ_WV |
Ort_WV |
Mobil_WV |
Dienst_WV |
Festn_WV |
Maila_WV |
leere Spalte |
Titel_STWV |
Name_STWV |
Vorn_STWV |
Straße_STWV |
|
|
|
|
|
|
|
111 |
Dr. |
Apfelbaum |
Apfel |
Apfelstr |
1 |
123 |
Apfelort |
456 |
789 |
000 |
Apfel@... |
|
|
Birnenbaum |
Birne |
Birnenstr. |
|
|
|
|
|
|
|
112 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
113 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
114 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
115 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Im Prinzip soll nun folgendes passieren. Er prüft Zeile für Zeile aus Tabelle2 Spalte A (ID) ob diese in Tabelle1 Spalte A (ID) vorkommt. Wenn ja, prüft er die rechts danebenliegende Zelle, ob dort "WV" oder "STWV" enthalten ist. Sind beide Bedingungen erfüllt überträgt er die Daten aus der Trefferzeile der Tabelle1 in die jeweiligen Zellen in Tabelle2.
Leider kenne ich mich mit Arrays nicht aus und habe zunächst versucht mir die Trefferzeilen in Tabelle 1 farblich zu markieren um zu schauen, ob er auch die richtigen Zeilen findet. Das klappt soweit mit u.g. Code ganz gut. An sich müssen jetzt "nur" noch die richtgen Spalten der Trefferzeile in Tabelle2 hineingeschrieben werden. Fragt sich nur wie. Ich hoffe, jemand kann mir helfen :)
P.S. Mit einer SVERWEIS Formel in den jeweiligen Zellen habe ich es auch hinbekommen. Bei über 10.000 Datensätzen und zig SVERWEIS Formeln rechnet er aber über 5min. So bin ich auf die ARRAYS gestoßen und habe gelesen, dass es damit deutlich schneller geht.
Sub SucheNachInhalten()
Dim lngZeile As Long
Dim lngZeileMax As Long
Dim lngZeileMax2 As Long
Dim VarDat As Variant
Dim i As Integer
With Tabelle1
'Array für Zeilen in Tabelle1
lngZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row
'Array für Zeilen in Tabelle2
lngZeileMax2 = Sheets("Tabelle2").Range("A" & .Rows.Count).End(xlUp).Row
For lngZeile = 2 To lngZeileMax
VarDat = Sheets("Tabelle2").Range("A2:A" & lngZeileMax2)
For i = 1 To UBound(VarDat)
If .Range("A" & lngZeile).Value = VarDat(i, 1) And .Range("B" & lngZeile).Value = "WV" Then
.Range("A" & lngZeile).Interior.ColorIndex = 6
End If
If .Range("A" & lngZeile).Value = VarDat(i, 1) And .Range("B" & lngZeile).Value = "STWV" Then
.Range("A" & lngZeile).Interior.ColorIndex = 8
Exit For
End If
Next i
Next lngZeile
End With
End Sub
VG und fröhliche Weihnachten
Niko
|