Collapse column

Autor Thema: Makro Zielwertsuche  (Gelesen 2544 mal)

Offline Sharox

  • Newbie
  • *
  • Beiträge: 2
    • Profil anzeigen
  • Office-KnowHow: Amateur
  • VBA-KnowHow- : Wenig
  • Version [Office] : Office 2010
Makro Zielwertsuche
« 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

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline Sharox

  • Newbie
  • *
  • Beiträge: 2
    • Profil anzeigen
  • Office-KnowHow: Amateur
  • VBA-KnowHow- : Wenig
  • Version [Office] : Office 2010
Antw: Makro Zielwertsuche
« Antwort #1 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

Wenn du dich noch intensiver mit Excel beschäftigen möchtest, dann empfiehlt sich ein Online-Kurs,
in dem du sehr viel über Excel erfährst und das gelernte umgehend in der Praxis anwenden kannst.