Hallo,
zunächst einmal: Ich bin ganz neu in der VBA-Welt, habe gerade ein Projekt an der Uni und muss dazu 2700 Datensätze auswerten. Ich finde es total Klasse, wie sehr mir Excel die Arbeit erleichtern kann und Versuche, den Prozess noch weiter zu optimieren. Für falsche/schlechte Beschreibungen zum Thema entschuldige ich mich also jetzt schon mal vorab!
Problem: Ich habe 2 Tabellen mit Datensätzen, die auf eine Bestimmte art und weise multipliziert werden müssen. (Jede spalte in tab1 muss mit allen werten von tab2 multipliziert werden, dann muss in tab2 eine summe der werte jeder zeile addiert werden und diese werte sind dann das gesuchte endprodukt, das muss dann in eine 4. tabelle kopiert werden, dabei dann immer um eine spalte verrutschen)
Dazu habe ich bereits ein Makro:
Sub Macro1()
'
' Macro1 Macro
'
' Keyboard Shortcut: Ctrl+y
'
ActiveCell.Select
Selection.AutoFill Destination:=ActiveCell.Range("A1:A30"), Type:= _
xlFillDefault
ActiveCell.Range("A1:A30").Select
Selection.AutoFill Destination:=ActiveCell.Range("A1:DU30"), Type:= _
xlFillDefault
ActiveCell.Range("A1:DU30").Select
ActiveWindow.ScrollColumn = 100
ActiveWindow.ScrollColumn = 99
ActiveWindow.ScrollColumn = 98
ActiveWindow.ScrollColumn = 96
ActiveWindow.ScrollColumn = 94
ActiveWindow.ScrollColumn = 79
ActiveWindow.ScrollColumn = 69
ActiveWindow.ScrollColumn = 65
ActiveWindow.ScrollColumn = 59
ActiveWindow.ScrollColumn = 57
ActiveWindow.ScrollColumn = 53
ActiveWindow.ScrollColumn = 48
ActiveWindow.ScrollColumn = 45
ActiveWindow.ScrollColumn = 43
ActiveWindow.ScrollColumn = 38
ActiveWindow.ScrollColumn = 36
ActiveWindow.ScrollColumn = 35
ActiveWindow.ScrollColumn = 32
ActiveWindow.ScrollColumn = 30
ActiveWindow.ScrollColumn = 27
ActiveWindow.ScrollColumn = 26
ActiveWindow.ScrollColumn = 23
ActiveWindow.ScrollColumn = 21
ActiveWindow.ScrollColumn = 19
ActiveWindow.ScrollColumn = 15
ActiveWindow.ScrollColumn = 14
ActiveWindow.ScrollColumn = 13
ActiveWindow.ScrollColumn = 9
ActiveWindow.ScrollColumn = 8
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
ActiveCell.Offset(2, -2).Range("A1:A28").Select
Selection.Copy
ActiveCell.Offset(0, -1).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
ActiveCell.Offset(1, 0).Range("A1").Select
Sheets("Sheet3").Select
ActiveCell.Offset(-2, 3).Range("A1").Select
End Sub
Nun muss ich immer nur eine Zahl im ersten Feld meiner kalkulationstabelle ändern, damit ich in tab1 einen datensatz / zeile weiter runter rutsche, der dann mit dem makro oben ausgewertet wird. Ich suche nun nach einer Möglichkeit, das die zahl automatisch nach jeden mal um +1 steigt und sich das makro dann wiederholt, so muss ich nicht 2700 mal eine zahl eingeben und dann auf enter drücken!
Hier ist ein weiteres makro, in dem ich die besagte formel-zelle auswähle und den wert ändere:
Sub Macro2()
'
' Macro2 Macro
'
' Keyboard Shortcut: Ctrl+x
'
Range("D5").Select
ActiveCell.FormulaR1C1 = "=Sheet1!R7C[38]*Sheet2!RC[-1]"
Range("D5").Select
End Sub
Die "7" in der Formel
= "=Sheet1!R7C[38]*Sheet2!RC[-1]"
soll dann zur 8, dann zur 9 usw. werden, während alles andere gleich bleibt.
Müsste ich nicht für die zahl eine variable eingeben können und diese so programmieren, das sie pro schleife um 1 steigt, bis 2700 erreicht ist ?
Für eure Hilfe wäre ich echt sehr dankbar!
Viele Grüße,
Malte
|