Leider habe ich nur das Problem, dass es beim Makro zum Laufzeitfehler kommt, da einige Zellen in der Spalte leer sind, 0 oder #WERT enthalten.
Das ist kein Problem des Makros an sich, sondern Deines Blattes. Und das gefundene Makro kannst Du vergessen, das macht was anderes.
Also zeichnen wir einfach mal ein Makro auf:
Sub Makro1()
Range("G2").Select
Range("G2").GoalSeek Goal:=0, ChangingCell:=Range("A2")
End Sub
Das SELECT können wir gleich löschen, das brauchen wir nicht, bleibt nur eine Zeile über die macht alles.
Das Range("G2") gibt ein RANGE Objekt zurück, das ersetzen wird durch eine Variable "Dim R As Range".
Dann brauchen wir nur noch eine Schleife die alle Zeilen durchläuft "For Each R In Range("G2:G20")".
Beim Range("A2") ersetzen wir die 2 durch die Zeile in der R gerade ist => R.Row
Dann machen wir noch eine Prüfung ob in R überhaupt eine Formel ist "If R.HasFormula Then"
Sub Makro1()
Dim R As Range
For Each R In Range("G2:G20")
If R.HasFormula Then
R.GoalSeek Goal:=0, ChangingCell:=Range("A" & R.Row)
End If
Next
End Sub
Und um automatisch zu ermitteln wo das Ende in Spalte G ist ersetzen wir
Range("G2:G20")
durch
Range("G2", Range("G" & Rows.Count).End(xlUp))
Das wars. Alles klar soweit?
Andreas.