AW: Zelleninhalte aus zwei Tabellen kombinieren
24.04.2008 11:55:00
fcs
Hallo Edmund,
hier mal das Gerüst für so eine Wert-Suche/Übernahme.
Dabei müssen beide Dateien geöffnet sein.
Das Makro muss du in der Datei1 einfügen, in der die gefundenen Werte eingetragen werden sollen.
Im Code muss du die Konstanten für Spalten und Zeilen anpassen und die Namen der Datei(en) und Tabellen.
Gruß
Franz
Sub WerteHolen()
'Spalte nach Werten durchsuchen und aus 2. Datei zugehörige Werte holen
Dim objWS As Worksheet 'Tabellenblatt in 1. Datei
Dim objWS_Finden As Worksheet 'Tabellenblatt in 2. Datei
Dim lngZeileWS As Long
Dim objZelle As Range
Dim varFind As Variant, varWert As Variant
Dim varSuchen
Dim intI
'Konstanten für Tabellenblatt in 1. Datei
'Spalte in der PK und PA gesucht werden sollen
Const intSpalteWS_Suchen As Integer = 1
'Spalte in der gefundenner Wert eingetragen werden soll
Const intSpalteWS_Wert As Integer = 4
'Zeile ab der Suchbegriffe gesucht werden sollen
Const lngZeileStart As Long = 2
'Konstanten für Tabellenblatt in 2. Datei
'Spalte in der PK.. bzw. PA... gesucht werden sollen
Const intSpalteFinden As Integer = 1
'Spalte in der Wert steht der in 1. Datei eingetragen werden
Const intSpalteWert As Integer = 2
'Tabellenblatt in 1. Datei festlegen - Namen ggf. anpassen
Set objWS = ActiveWorkbook.Worksheets("Liste")
'Tabellenblatt in 2. Datei festlegen - Namen ggf. anpassen
Set objWS_Finden = Workbooks("VBA_Verweis.xls").Worksheets("Tabelle1")
' Array mit den zu findenden Suchbegriffen definieren
varSuchen = Array("PA*", "PK*") 'ggf. anpassen
With objWS
'Spalte nach Begriffen durchsuchen
For lngZeileWS = lngZeileStart To .Cells(.Rows.Count, intSpalteWS_Suchen).End(xlUp).Row
For intI = LBound(varSuchen) To UBound(varSuchen)
If .Cells(lngZeileWS, intSpalteWS_Suchen).Value Like varSuchen(intI) Then
varFind = .Cells(lngZeileWS, intSpalteWS_Suchen)
'Suchbegriff in 2. Datei suchen
With objWS_Finden
Set objZelle = .Columns(intSpalteFinden).Find(what:=varFind, _
LookIn:=xlValues, lookat:=xlWhole)
If objZelle Is Nothing Then
'Suchbegriff wurde nicht gefunden
varWert = Null
Else
'für gefundene Zelle den Wert merken/speichern
varWert = .Cells(objZelle.Row, intSpalteWert)
End If
End With
Exit For
End If
Next
'gefundenen Wert einfügen
.Cells(lngZeileWS, intSpalteWS_Wert).Value = varWert
Next
End With
End Sub