Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<

Microsoft Office 2003-2019 => Excel => Thema gestartet von: Sharox am Juli 25, 2014, 12:04:59 Nachmittag

Titel: Makro Zielwertsuche
Beitrag von: Sharox am Juli 25, 2014, 12:04:59 Nachmittag
Hallo Zusammen,
ich hab hier mein Makro mit ner Zielwertsuche und er funktioniert eigentlich. ABER, 

Kann man den Code nicht kürzer schreiben mit ner Schleife oder sowas?
2. Es kommt nicht immer 11 % genau raus, sonder auch mal darunter z.B 10.98 %. Gibt es hier nicht auch noch die Möglichkeit, das  immer mindestens 11 % errechnet? Also wenn > 11 % dann neu berechnen?
3. Das Makro soll auch, wenn möglich über die ganze Spalte (K:K) (L:L) und funktionieren, aber nur solange bis in Spalte L was drin steht.

Anbei mein Code. Ich habe hier bis Zeile 50 den code geschreiben. Leider bekomme ich wie bereits oben beschrieben diesen Laufzeitfehler wenn ich nur 20 Zeilen zum ausrechnen benötige. Gibt es die Möglichkeit die ganze Spalte mit diesem Zielwert (Range) zu programmieren aber eben nur soviele Zeilen ausrechnet wie auch befüllt?

Range("K5").Select
    Range("K5").GoalSeek Goal:=0.11, ChangingCell:=Range("L5")
    Range("K6").Select
    Range("K6").GoalSeek Goal:=0.11, ChangingCell:=Range("L6")
    Range("K7").Select
    Range("K7").GoalSeek Goal:=0.11, ChangingCell:=Range("L7")
    Range("K8").Select
    Range("K8").GoalSeek Goal:=0.11, ChangingCell:=Range("L8")
    Range("K9").Select
    Range("K9").GoalSeek Goal:=0.11, ChangingCell:=Range("L9")
    Range("K10").Select
    Range("K10").GoalSeek Goal:=0.11, ChangingCell:=Range("L10")
    Range("K11").Select
    Range("K11").GoalSeek Goal:=0.11, ChangingCell:=Range("L11")
    Range("K12").Select
    Range("K12").GoalSeek Goal:=0.11, ChangingCell:=Range("L12")
    Range("K13").Select
    Range("K13").GoalSeek Goal:=0.11, ChangingCell:=Range("L13")
    Range("K14").Select
    Range("K14").GoalSeek Goal:=0.11, ChangingCell:=Range("L14")
    Range("K15").Select
    Range("K15").GoalSeek Goal:=0.11, ChangingCell:=Range("L15")
    Range("K16").Select
    Range("K16").GoalSeek Goal:=0.11, ChangingCell:=Range("L16")
    Range("K17").Select
    Range("K17").GoalSeek Goal:=0.11, ChangingCell:=Range("L17")
    Range("K18").Select
    Range("K18").GoalSeek Goal:=0.11, ChangingCell:=Range("L18")
    Range("K19").Select
    Range("K19").GoalSeek Goal:=0.11, ChangingCell:=Range("L19")
    Range("K20").Select
    Range("K20").GoalSeek Goal:=0.11, ChangingCell:=Range("L20")
    Range("K21").Select
    Range("K21").GoalSeek Goal:=0.11, ChangingCell:=Range("L21")
    Range("K22").Select
    Range("K22").GoalSeek Goal:=0.11, ChangingCell:=Range("L22")
    Range("K23").Select
    Range("K23").GoalSeek Goal:=0.11, ChangingCell:=Range("L23")
    Range("K24").Select
    Range("K24").GoalSeek Goal:=0.11, ChangingCell:=Range("L24")
    Range("K25").Select
    Range("K25").GoalSeek Goal:=0.11, ChangingCell:=Range("L25")
    Range("K26").Select
    Range("K26").GoalSeek Goal:=0.11, ChangingCell:=Range("L26")
    Range("K27").Select
    Range("K27").GoalSeek Goal:=0.11, ChangingCell:=Range("L27")
    Range("K28").Select
    Range("K28").GoalSeek Goal:=0.11, ChangingCell:=Range("L28")
    Range("K29").Select
    Range("K29").GoalSeek Goal:=0.11, ChangingCell:=Range("L29")
    Range("K30").Select
    Range("K30").GoalSeek Goal:=0.11, ChangingCell:=Range("L30")
    Range("K31").Select
    Range("K31").GoalSeek Goal:=0.11, ChangingCell:=Range("L31")
    Range("K32").Select
    Range("K32").GoalSeek Goal:=0.11, ChangingCell:=Range("L32")
    Range("K33").Select
    Range("K33").GoalSeek Goal:=0.11, ChangingCell:=Range("L33")
    Range("K34").Select
    Range("K34").GoalSeek Goal:=0.11, ChangingCell:=Range("L34")
    Range("K35").Select
    Range("K35").GoalSeek Goal:=0.11, ChangingCell:=Range("L35")
    Range("K36").Select
    Range("K36").GoalSeek Goal:=0.11, ChangingCell:=Range("L36")
    Range("K37").Select
    Range("K37").GoalSeek Goal:=0.11, ChangingCell:=Range("L37")
    Range("K38").Select
    Range("K38").GoalSeek Goal:=0.11, ChangingCell:=Range("L38")
    Range("K39").Select
    Range("K39").GoalSeek Goal:=0.11, ChangingCell:=Range("L39")
    Range("K40").Select
    Range("K40").GoalSeek Goal:=0.11, ChangingCell:=Range("L40")
    Range("K41").Select
    Range("K41").GoalSeek Goal:=0.11, ChangingCell:=Range("L41")
    Range("K42").Select
    Range("K42").GoalSeek Goal:=0.11, ChangingCell:=Range("L42")
    Range("K43").Select
    Range("K43").GoalSeek Goal:=0.11, ChangingCell:=Range("L43")
    Range("K44").Select
    Range("K44").GoalSeek Goal:=0.11, ChangingCell:=Range("L44")
    Range("K45").Select
    Range("K45").GoalSeek Goal:=0.11, ChangingCell:=Range("L45")
    Range("K46").Select
    Range("K46").GoalSeek Goal:=0.11, ChangingCell:=Range("L46")
    Range("K47").Select
    Range("K47").GoalSeek Goal:=0.11, ChangingCell:=Range("L47")
    Range("K48").Select
    Range("K48").GoalSeek Goal:=0.11, ChangingCell:=Range("L48")
    Range("K49").Select
    Range("K49").GoalSeek Goal:=0.11, ChangingCell:=Range("L49")
    Range("K50").Select
    Range("K50").GoalSeek Goal:=0.11, ChangingCell:=Range("L50")


Danke im Voraus
Sharox
Titel: Antw: Makro Zielwertsuche
Beitrag von: Sharox am Juli 27, 2014, 16:41:30 Nachmittag
Hallo Zusammen,

so nun bin ich fast am Ziel. Mein Code lautet wie folgt und funktioniert:

Sub Makro1()
    Dim iRow As Integer
   
    For iRow = 5 To 50
        Cells(iRow, 11).GoalSeek Goal:=0.11, ChangingCell:=Cells(iRow, 12)
    Next
End Sub

Frage: Nun sind einige Ergebnise knapp unter 11%, also 10.98 %. Gibt es die Möglichkeit aller Zellen die kleiner sind als 11%, wie z.B statt Goal:=0.11 würde ich dann Goal:=>0.11 . Hab ich bereits versucht doch leider ohne Erfolg.

Oder er soll alle Zellen in Spallte die kleiner ist nochmal neu berechnen + 0.1101 und das solange bis die kleinste mögliche Zahl mit 11 % rauskommt.

Hoffe es kann mir hier jemand helfen.

Dann wollte ich noch einbauen, dass wenn ich Spalte I kein wert ist er auch nicht rechnen soll, sodass die Laufzeitfehlermeldung nicht mehr erscheint.

DANKE DANKE DANKE :-)
Sharox