Hallo Zusammen,
Ich bin relative neu in der VBA Programmierung, und ich habe keinen technischen Background. Daher bitte ich um Verzeihung falls ich nicht die richtigen Terminologien und Begriffe verwende :-)
Folgendes Problem ich habe das File aus dem Anhang. Dieses File ist eine Vereinfachung von meiner eigentlichen Aufgabe beinhaltet aber das gleiche Konzept und die gleiche Vorgehensweise. Vom Aufbau besteht dieses File aus den Drei Arbeitsblättern „Target“, „IT1“ und „IT2“. Die daten sind in IT1 und IT2 hinterlegt und sollen über einen Vlookup in das Target worksheet. Für den Vlookup verewende ich Die ID1 und ID2 welche in ieiner form In target und IT1 und IT2 vorhanden sind.
Nun folgedes Problem ich hab jetzt ein VBA Skript geschrieben welches wiefolgt auch funktioniert:
-----------------------------------------------
Sub Neu()
Dim i As Integer
For i = 1 To 2
If i = 1 Then x = "ID1"
If i = 1 Then y = "Information"
If i = 1 Then Z = "first"
If i = 2 Then x = "ID2"
If i = 2 Then y = "Information2"
If i = 2 Then Z = "Second"
'gehe auf ID1 um X wert zu speichern
Range("6:6").Find(x).Select
Dim IDX As Integer
IDX = ActiveCell.Column
ActiveCell.Offset(1, 0).Value = IDX
Range("6:6").Find(y).Select
Dim IDY As Integer
IDY = ActiveCell.Column
ActiveCell.Offset(1, 0).Value = IDY
Dim SK As Integer
SK = IDX - IDY
Range("6:6").Find(y).Select
ActiveCell.Offset(4, 0).Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-6],'IT1'!R2C1:R18C2,2,FALSE)"
Next i
End Sub
-----------------------------------------------
Diese Prozedur möchte ich nun für mehrere Files anwenden die vom Grundaufbau ähnlich, aber leider nicht gleich sind. Somit ist die Reihenfolge der Spalten(Atribute / Header/ wie auch immer) nicht immer die gleiche. Daher versuche ich meine Prozedur so variable wie Möglich zu gestalten, was so halbwegs funktioniert.
Nun hab ich eine frage speziell zu dem Vlookup….es geht speziell um folgenden Teil
…..
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-6],'IT1'!R2C1:R18C2,2,FALSE)"
….
Diesen Teil würde ich gerne dynamisch gestalten, aus diesem Grund (und anderen Gründen) Habe ich nun die Variablen davor definiert:
Dim i As Integer
For i = 1 To 2
If i = 1 Then x = "ID1"
If i = 1 Then y = "Information"
If i = 1 Then Z = "First"
If i = 2 Then x = "ID2"
If i = 2 Then y = "Information2"
If i = 2 Then Z = "Second"
Range("6:6").Find(x).Select
Dim IDX As Integer
IDX = ActiveCell.Column
ActiveCell.Offset(1, 0).Value = IDX
Range("6:6").Find(y).Select
Dim IDY As Integer
IDY = ActiveCell.Column
ActiveCell.Offset(1, 0).Value = IDY
Dim SK As Integer
SK = IDX - IDY
Wenn ich nun versuche die Variable SK in den Vlookup hineinzusetzen klappt es leider nicht.
…..
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[SK],'IT1'!R2C1:R18C2,2,FALSE)”
…..
Lasse ich die Prozedur ablaufen hackt mir das Skript genau an dieser Stelle. Fahre ich jedoch mit der Maus auf die entsprechende Stelle wird mir in der erscheinenden Quickinfo bestätigt dass die Variable an diesem Punkt den Wert „-6“ hat, also genau denjenigen welcher entsprechend benötigt werden würde.
Also um die Frage zu konkretisieren: Wie kann ich das Suchkriterium in diesem Vlookup über die Variable „SK“ definieren?
Die Datei auf die ich mich hierin bezieh findet ihr unter:
https://drive.google.com/folderview?id=0B3AuahuaklZvSldxN0VETnQwcnc&usp=sharing
Ich bin über jeden weiteren Input und Hilfe dankbar :-)
LG
Jochen
|