Aus diesem Grund die Frage 1. (Die Bereiche sind hier nicht mehr "K" sondern C.
Wenn man nicht weiß bis zur welchen Zeile Einträge vorhanden sind, dann ermittelt man das:
Beispiel:
Dim rngSummary As Excel.Range
With Worksheets("Zusammenfassung Ergebnisse")
Set rngSummary = .Range("C5:C" & .Range("C" & .Rows.Count).End(xlUp).Row)
If rngSummary.Row < 5 Then Set rngSummary = Nothing
End With
jetzt kannst du die Zeile:
Worksheets("Zusammenfassung Ergebnisse").Range("C5:C500").Formula = "=VLOOKUP($A5, 'Steuerungstabelle'!$D$5:$AE$6000, 2, FALSE)"
durch folgende ersetzen:
rngSummary.Formula = "=VLOOKUP($A5, 'Steuerungstabelle'!$D$5:$AE$6000, 2, FALSE)"
Das gleiche kannst du jetzt auch mit der Range in der Steuerungstabelle tun, nur brauchst du diese Bereichsangabe als Zeichenkette (String).
Im ganzen könnte das also so ausschauen:
Dim rngSummary As Excel.Range
With Worksheets("Zusammenfassung Ergebnisse")
Set rngSummary = .Range("C5:C" & .Range("C" & .Rows.Count).End(xlUp).Row)
If rngSummary.Row < 5 Then Set rngSummary = Nothing
End With
Dim rngControl As Excel.Range
With Worksheets("Steuerungstabelle")
Set rngControl = .Range("D5:AE" & .Range("D" & .Rows.Count).End(xlUp).Row)
If rngControl.Row < 5 Then Set rngControl = Nothing
End With
If rngSummary Is Nothing _
Or rngControl Is Nothing _
Then
'es gibt scheinbar keine Daten zum verarbeiten
Exit Sub
End If
rngSummary.Formula = "=VLOOKUP($A5," & rngControl.Address(True, True, External:=True) & ", 2, FALSE)"
In den Zeilen 4/5 und 11/12 wird der Bereich referenziert. Dabei wird die Zeilenanzahl anhand einer definierten Spalte ermittelt (C und D). Da die Daten erst ab Zeile 5 anfangen, findet da außerdem noch eine Prüfung <5 statt; wenn keine Daten vorhanden sind, erhält man auf diesem Weg einen Zeilenindex kleiner dem Wert 5.
|