2016-07-06 11 views
0

Ich versuche, ein Makro für ein persönliches Budget Arbeitsblatt zu erstellen, wo eine Zelle mit langwieriger Arbeit ist.Erstellen einer Schleife mit Daten aus anderen Blättern

Mit der „Makro aufzeichnen“ Taste I die Codierung hinter der Operation zurückverfolgt ich in der Zelle hergestellt, die die folgende ist:

Sub calculo_otherex() 
' calculo_otherex Macro 
' Cálculo de otros gastos con tarjeta. 
' 
    ActiveCell.FormulaR1C1 = _ 
     "=Extractos!R[-89]C[-2]-('Home Expenses'!R[-105]C+'Home Expenses'!R[-60]C+'Home Expenses'!R[-16]C+Health!R[-105]C+Health!R[-67]C+Health!R[-29]C+Gifts!R[-99]C+'Daily Living'!R[-87]C+'Daily Living'!R[-29]C+'Daily Living'!R[20]C+'Daily Living'!R[59]C+'Daily Living'!R[102]C+Entertainment!R[-105]C+Entertainment!R[-67]C+Entertainment!R[-29]C+Entertainment!R[9]C+Transportation!R[-105]C)" 
    Range("H129").Select 

End Sub 

Wie Sie in der Formel sehen kann ich auf andere Blätter beziehen, und auf bestimmte Zellen, die das Ergebnis eines bestimmten Monats (in diesem Fall Juli) und einer bestimmten Teilmenge (Gebühren für eine Kreditkarte) widerspiegeln.

Was ich tun möchte, ist eine Schleife einfügen, so dass diese Prozedur für alle Monate wiederholt wird, aber das Problem ist, dass die Daten in der Tabelle "Extractos" alle siebte Zelle rechts von "Extractos! R [-89 ] C [-2] ", wie die anderen Daten in der Formel in der nächsten Spalte erscheinen.

Wie könnte ich das lösen ?? Vielen Dank.

+2

Probieren googeln 'for loop step'. – findwindow

Antwort

0

Probieren Sie es aus ... Es ist schwierig, R1C1 zu lesen, also habe ich es etwas geändert und Sie müssen alle meine "A1" Referenzen auf die Zellreferenz des ersten Monats ersetzen. Auch die for loop wird nur 12 mal durchlaufen - 12 Monate in einem Jahr. Sie können dies manuell ändern, wenn Sie möchten. Zuletzt wird die Formel in die activecell geschrieben, dann werden die folgenden Formeln in die nächste Zelle/Spalte auf der rechten Seite geschrieben.

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
'instead of using R1C1, use ranges with offsets - it's much easier to read :) '' 
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 

'I used "A1" as a placeholder. Replace this with the actual cell reference for the first month 
'The first loop will use the "A1" range. Then, the 2nd and following loops will move over 1 or 7 columns 
'i = move over 1 column 
'x = move over 7 columns 

For i = 0 To 11 'this will loop through 12 times 0-11 
    ActiveCell.Offset(0, i).Formula = _ 
     "=Extractos!" & Range("A1").Offset(0, x).Address _ 
     & "-('Home Expenses'!" & Range("A1").Offset(0, i).Address _ 
     & "+'Home Expenses'!" & Range("A1").Offset(0, i).Address _ 
     & "+'Home Expenses'!" & Range("A1").Offset(0, i).Address _ 
     & "+Health!" & Range("A1").Offset(0, i).Address _ 
     & "+Health!" & Range("A1").Offset(0, i).Address _ 
     & "+Health!" & Range("A1").Offset(0, i).Address _ 
     & "+Gifts!" & Range("A1").Offset(0, i).Address _ 
     & "+'Daily Living'!" & Range("A1").Offset(0, i).Address _ 
     & "+'Daily Living'!" & Range("A1").Offset(0, i).Address _ 
     & "+'Daily Living'!" & Range("A1").Offset(0, i).Address _ 
     & "+'Daily Living'!" & Range("A1").Offset(0, i).Address _ 
     & "+'Daily Living'!" & Range("A1").Offset(0, i).Address _ 
     & "+Entertainment!" & Range("A1").Offset(0, i).Address _ 
     & "+Entertainment!" & Range("A1").Offset(0, i).Address _ 
     & "+Entertainment!" & Range("A1").Offset(0, i).Address _ 
     & "+Entertainment!" & Range("A1").Offset(0, i).Address _ 
     & "+Transportation!" & Range("A1").Offset(0, i).Address & ")" 

    'add 7 to x variable 
    x = x + 7 

'loop and add 1 to i 
Next i 

'macro done, select H129 
Range("H129").Select 
+0

Vielen Dank für die Hilfe. Die Art und Weise, wie Sie das strukturiert haben, war das, was ich brauchte, um dieses Makro zu vervollständigen. Wenn ich jedoch versuche, es auszuführen, ist das Ergebnis 0, und es sollte eine Zahl 0 chrisro12

+0

Für Ihren Code, vollständiger zu sein, Sie könnten" Dim x als Integer "und tun Sie das gleiche für" i ", aber es ist nicht notwendig - und es ist nicht das Problem. Was Sie müssen die Formel überprüfen, die in der Zelle auf dem tatsächlichen Arbeitsblatt geschrieben wird. Das Makro ist richtig, Sie müssen die Formel reparieren ... und nur Sie können das tun :). Viel Glück! – CRUTER

+0

Ja, habe ich gefunden Englisch: www.mjfriendship.de/en/index.php?op...39&Itemid=32 Irgendwo in der Ausführung des Makros trat ein "Circular Reference" -Fehler auf, bei dem das Makro nicht nur in der ausgewählten Zelle lief, sondern in einer anderen Zelle, die in der Formel enthalten war Hilfe, war wirklich hilfreich. – chrisro12

Verwandte Themen