Sverweis dauert zu lange
07.12.2006 09:42:42
Melanie
ich bräuchte noch mal Eure Schützenhilfe....
ich muss monatlich eine aktuelle Materialstammliste erstellen, die aus 52000 Zeilen und 70 Spalten besteht, wovon ca. 30 Spalten mit diversen S-Verweisen aus wiederum 10 anderen Dateien gefüllt werden. UND DAS DAUERT STUNDEN!!! Ich hatte mir damals ein netten kleinen Anfänger-Code geschrieben, das klappt auch alles, aber es dauert halt EWIG.
Zum Jahreswechsel stehen eh Veränderungen an dieser Datei an und da dachte ich mir, vielleicht kann man das ja auch schneller hinkriegen. Diese Dinge mit Screenupdating und Displayalerts ausschalten und so habe ich natürlich schon gemacht.
Sub TabelleAusfüllen2006neu()
Dim intRow As Long
Dim wkbQuelle1 As Workbook
Dim wkbQuelle2 As Workbook
Dim wkbQuelle3 As Workbook
Dim wkbQuelle4 As Workbook
Dim wkbQuelle5 As Workbook
Dim wkbQuelle6 As Workbook
Dim wkbQuelle7 As Workbook
Dim wbkQuelle8 As Workbook
Dim wkbQuelle9 As Workbook
Dim wkbQuelle10 As Workbook
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set wkbQuelle1 = Workbooks.Open("M:\et-p\Materialstamm ET\Disponenten.xls")
Set wkbQuelle2 = Workbooks.Open("M:\et-p\Materialstamm ET\VStati-aktuell.xls")
Set wkbQuelle3 = Workbooks.Open("M:\et-p\Materialstamm ET\Verbräuche\(Monats-)Verbräuche 2004_neu.xls")
Set wkbQuelle4 = Workbooks.Open("M:\Werk7WorkingCapital\Projektcontrolling\Gesamtbestand-aktuell.xls")
Set wkbQuelle5 = Workbooks.Open("M:\et-p\Materialstamm ET\Verbräuche\(Monats-)Verbräuche 2005.xls")
Set wkbQuelle6 = Workbooks.Open("M:\et-p\Materialstamm ET\Verbräuche\(Monats-)Verbräuche 2006.xls")
Set wkbQuelle7 = Workbooks.Open("M:\et-p\Materialstamm ET\ET-Auslaufdaten.xls")
Set wkbQuelle8 = Workbooks.Open("M:\et-p\Schrott\Schrott_2006\Schrottliste 2006-die aktuelle.xls")
Set wkbQuelle9 = Workbooks.Open("M:\et-p\Materialstamm ET\Verwendung.xls")
Set wkbQuelle10 = Workbooks.Open("M:\erstanlagedatum.xls")
Workbooks("matstwerk7.xls").Sheets("matstwerk7").Activate
intRow = Cells(Rows.Count, 1).End(xlUp).Row
Range("F2:F" & intRow).FormulaR1C1 = "=IF(ISERROR(VLOOKUP(C[1],[Disponenten.xls]Tabelle1!C1:C2,2,0)), ""nicht Werk 7"", VLOOKUP(C[1],[Disponenten.xls]Tabelle1!C1:C2,2,0))"
Columns("F:F").Copy
Columns("F:F").PasteSpecial Paste:=xlPasteValues
' wenn Disponent = leer kein Disponent
Range("J2:J" & intRow).FormulaR1C1 = "=IF(ISERROR(VLOOKUP(C[-9],'[VStati-aktuell.xls]Export'!C1:C6,6,0)), ""-"", VLOOKUP(C[-9],'[VStati-aktuell.xls]Export'!C1:C6,6,0))"
Columns("J:J").Copy
Columns("J:J").PasteSpecial Paste:=xlPasteValues
Range("K2:K" & intRow).FormulaR1C1 = "=IF(ISERROR(VLOOKUP(C[-10],'[VStati-aktuell.xls]TG'!C1:C6,6,0)), ""-"",VLOOKUP(C[-10],'[VStati-aktuell.xls]TG'!C1:C6,6,0)) "
Columns("K:K").Copy
Columns("K:K").PasteSpecial Paste:=xlPasteValues
Range("N2:N" & intRow).FormulaR1C1 = "=IF(ISERROR(VLOOKUP(C[-13],'[(Monats-)Verbräuche 2004_neu.xls]Verbrauch2004'!C1:C3,3,0)), ""-"", VLOOKUP(C[-13],'[(Monats-)Verbräuche 2004_neu.xls]Verbrauch2004'!C1:C3,3,0))"
Columns("N:N").Copy
Columns("N:N").PasteSpecial Paste:=xlPasteValues
Range("O2:O" & intRow).FormulaR1C1 = "=IF(ISERROR(VLOOKUP(C[-14],'[(Monats-)Verbräuche 2005.xls]verbrauch2005'!C1:C4,4,0)), ""-"", VLOOKUP(C[-14],'[(Monats-)Verbräuche 2005.xls]verbrauch2005'!C1:C4,4,0))"
Columns("O:O").Copy
Columns("O:O").PasteSpecial Paste:=xlPasteValues
Range("P2:P" & intRow).FormulaR1C1 = "=IF(ISERROR(VLOOKUP(C[-15],'[(Monats-)Verbräuche 2006.xls]verbrauch2006'!C1:C4,4,0)), ""-"", VLOOKUP(C[-15],'[(Monats-)Verbräuche 2006.xls]verbrauch2006'!C1:C4,4,0))"
Columns("P:P").Copy
Columns("P:P").PasteSpecial Paste:=xlPasteValues
Range("Q2:Q59000").FormulaR1C1 = "=IF(ISERROR(VLOOKUP(C[-16],'[Gesamtbestand-aktuell.xls]Gesamtbestand ohne Sonderläger'!C1:C16,16,0)), 0, VLOOKUP(C[-16],'[Gesamtbestand-aktuell.xls]Gesamtbestand ohne Sonderläger'!C1:C16,16,0))"
Columns("Q:Q").Copy
Columns("Q:Q").PasteSpecial Paste:=xlPasteValues
Range("BM2:BM59000").FormulaR1C1 = "=IF(ISERROR(VLOOKUP(C[-64],'[Gesamtbestand-aktuell.xls]5000'!C1:C16,12,0)), 0, VLOOKUP(C[-64],'[Gesamtbestand-aktuell.xls]5000'!C1:C16,12,0))"
Columns("Q:Q").Copy
Columns("Q:Q").PasteSpecial Paste:=xlPasteValues
usw. usw.
dann folgen noch haufenweise Berechnungen, ich wollte das nur mal beispielhaft zeigen, wie ich an die Daten komme
FRAGE:
mir hat der Josef Ehrensberger (nochmals meinen allerherzlichsten DANK!!!) mal mit einem genialen Code geholfen, in dem Arrays eingelesen wurden - aber das habe ich mit meinen Anfänger-Kenntnissen nicht mal ansatzweise durchblickt.
Könnte man diese S-Verweise durch Arrays "schneller" machen???
Mir würde auf meinen konkreten Fall bezogen ein Beispiel vermutlich ausreichen, um das auf die 10 anderen Dateien zu beziehen.
Wäre super freundlich....
Gruß,
Melanie