Warum VBA wenns mit Formel geht?
11.03.2013 09:26:49
Klaus
Hallo Dietmar,
an Huberts INDEX Formel ist nichts auszusetzen, ich hätte hier aber eine SVERWEIS Formel genommen.
Warum möchtest du das per VBA lösen, wenn es per Formel so einfach geht? OK, vielleicht brauchst du den Vorgang auf einem Button oder so. Anbei mal ein Code, der dir die gesuchten Werte direkt in die Tabelle schreibt. Im Code verwende ich eine einfache SVERWEIS Formel, statt den ganzen Vorgang zu programmieren. Im Endeffekt macht der Code genau das von Huber vorgeschlagene (Formel schreiben, nach rechts und unten ziehen), nur halt automatisch.
Sub KundendatenEinlesen()
'***** KUNDENDATEI DEFINIEREN *****
Dim sPfad As String
Dim sDatei As String
Dim sTabelle As String
sPfad = "C:\TestTmp" 'ANPASSEN
sDatei = "Kundendaten.xls" 'ANPASSEN
sTabelle = "Tabelle1" 'ANPASSEN
'***** RAHMENBEDINGUNGEN DEFINIEREN ****
Dim iCol As Integer
Dim lRowL As Long
Dim lRowF As Long
Dim iColAnz As Integer
Dim rMail As Range
iCol = 1 'Mailadressen in Spalte 1 (=A)
lRowF = 2 'erste Adresse in Zeile 2 (drüber Überschriften?)
iColAnz = 25 '25 Spalten vergleichen
'**** DATENSÄTZE EINLESEN *****
With ActiveSheet 'ANPASSEN, falls nötig
'letzte Zeile
lRowL = .Cells(.Rows.Count, iCol).End(xlUp).Row
'gesamten Bereich pro Mailadresse durchlaufen
For Each rMail In .Range(.Cells(lRowF, iCol + 1), .Cells(lRowL, iCol + iColAnz))
'Werte per Formel aus Datenbank holen
rMail.FormulaR1C1 = "=VLOOKUP(RC1,'" & sPfad & "\[" & sDatei & "]" & sTabelle & "'! _
R1C1:R65536C" & iColAnz + 1 & "," & rMail.Column & ",)"
'Formel mit Wert ersetzen
rMail.Value = rMail.Value
Next rMail
End With
End Sub
Grüße,
Klaus M.vdT.