Registriert seit: 26.03.2019
Version(en): 2010
Hallo Zusammen,
also ich möchte in meiner Excel via Makro gerne über die ganze Tabelle eine Zielsuche laufen lassen.
Die aktuelle Formel ist folgende:
Range("BI243").GoalSeek Goal:=Range("BM243"), ChangingCell:=Range("AT243")
Aktuell wird allerdings nur die eine Zeile abgeglichen - ich möchte aber, dass das ganze über jede einzelne ausgefüllte Zeile drüber läuft...Quasi:
Range("BI243").GoalSeek Goal:=Range("BM243"), ChangingCell:=Range("AT243")
Range("BI244").GoalSeek Goal:=Range("BM244"), ChangingCell:=Range("AT244")
Range("BI245").GoalSeek Goal:=Range("BM245"), ChangingCell:=Range("AT245")
.
.
.
kann mir da jemand helfen ?
Danke.
Registriert seit: 26.03.2019
Version(en): 2010
Ok ich habe das nun aktuell wie folgt gelöst:
Public Sub Zielwert()
'----------------------Versuch 2--------------------------------'
Const iMaxIterations = 800 'Anzahl der zu durchlaufenden Iterationen
Const strStartRng = "BI8" 'erster Zellbezug, ab welcher gearbeitet wird
Const strGoalRng = "BM8" 'erster Zellbezug des Goal-Wertes
Const strChngRng = "AT8" ' erster Zellbezug des ChangingCell-Wertes
'VARIABLES
'------------------------------------------------------'
Dim i As Integer
Dim rStartCell As Range
Dim rGoalCell As Range
Dim rChngCell As Range
'DEFINIERE RANGES
'------------------------------------------------------'
Set rStartCell = Range(strStartRng)
Set rGoalCell = Range(strGoalRng)
Set rChngCell = Range(strChngRng)
'SCHLEIFE
'------------------------------------------------------'
For i = 1 To iMaxIterations
'teste auf Abbruchbedingung VOR Ausführung des Codes
If rStartCell.Offset(i - 1, 0).Value = "" Then Exit For
'Starte GoalSeeker
rStartCell.Offset(i - 1, 0).GoalSeek Goal:=rGoalCell.Offset(i - 1, 0), ChangingCell:=rChngCell.Offset(i - 1, 0)
Next i
End Sub
Funktioniert alles...glaube ich. Allerdings habe ich folgendes Problem - manchmal ist eine oder zwei Zeilen leer. Ich würde gerne in der Schleife etwas drinne haben, dass er erst aufhört wenn er 10 Zeilen hintereinander nichts zu greifen hatte...
Danke für eure HILFE
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
baue Dir in der Schleife einen Zähler ein, der unter einer Bedingung hochgesetzt wird Wenn die maximale Zahl erreicht ist, verässt Du die Schleife oder das Makro. Im Prinzip hast Du so was ansatzweise schon in der Schleife drin.
If rStartCell.Offset(i - 1, 0).Value = "" Then Exit For
Das könnte dann so aussehen:
If rStartCell.Offset(i - 1, 0).Value = "" Then iCnt = iCnt + 1: If iCnt > 10 then Exit For
Ob rStartCell.Offset(i - 1, 0) nun der richtige Punkt zum Prüfen ist, sei mal dahingestellt.
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 26.03.2019
Version(en): 2010
Stimmt....das sollte den Fehler beheben. Allerdings hab ich dann einen Debugg in der Zeile darauf...vermutlich wegen dem Thema was du schon angesprochen hattest.
"Ob rStartCell.Offset(i - 1, 0) nun der richtige Punkt zum Prüfen ist, sei mal dahingestellt."
Allerding finde / sehe ich gerade den Fehler nicht...muss ich nochmal in ruhe drüber schauen.