Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1372to1376
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro Zielwertsuche

Makro Zielwertsuche
25.07.2014 12:12:25
Stefan
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 kleiner als 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
Stefan

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro Zielwertsuche
25.07.2014 12:20:18
Martin
Hallo Stefan,
so ist es kürzer:
Sub Makro1()
Dim iRows As Integer
For iRow = 5 To 50
Cells(iRow, 11).GoalSeek Goal:=0.11, ChangingCell:=Cells(iRow, 12)
Next
End Sub
Viele Grüße
Martin

...kleine Korrektur...
25.07.2014 12:30:08
Martin
Hallo Stefan,
ich habe gerade einen kleinen Fehler bei meiner Variablenbezeichnung entdeckt: iRows / iRows
Also nochmal:
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
Eine andere Möglichkeit:
Sub Makro2()
Range("K5").GoalSeek Goal:=0.11, ChangingCell:=Range("L5")
Range("K5").AutoFill Range("K5:K50"), xlFillCopy
End Sub
Viele Grüße
Martin

Anzeige
AW: Makro Zielwertsuche
26.07.2014 14:55:55
Stefan
Hallo Martin, ^super klasse genau so Tausend Dank!!!
Nun habe ich aber noch folgende Probeme:
1. Er zeigt mir auch immer Ergebisse mit knapp unter 0.11 an. Das ist aber das minimum was raus kommen muss.
Gibt es hier die Möglichkeit noch zusätzlich ein Makro einzupflegen der nachträglich nochmal kalkuliert bei allen Zellen deren Wert in Spalte K:K 11.02 %.
2. Sobald ich nur 10 Zeilen berechnen möchte kommt die Error Message Laufzeitfehler 1004. Gibt es hier vielleicht noch die Möglichkei, dass er nur die Zeilen berechnung Soll wo in Spalte I auch was drin steht ohne dass eine Error- Message erscheint? Also quasi wenn ich Spalte I 0 dann berechne ansonsten eben nicht.
Ziemlich viel Fragen ich weiß, aber hoffe mit kann nochmal jemand helfen :-)
Liebe Grüße
Stefan

Anzeige
AW: Makro Zielwertsuche
26.07.2014 20:01:36
Stefan
OK nun funktioniert alles. Nur für die Werte unter 11% muss ich irgenwie noch wegbekommen.
Code:
Private Sub CommandButton1_Click()
Dim iRow As Integer
For iRow = 5 To 50
Cells(iRow, 11).GoalSeek Goal:=0.1101, ChangingCell:=Cells(iRow, 12)
Next
End Sub

Ergebnis sieht folgendermaßen aus:
10,961% 1.144,90 nicht ok
11,004% 62,37 ok
10,998% 238,03 nicht ok
11,008% 499,00 ok
11,005% 60,63 ok
10,968% 20,39 nicht ok
10,992% 47,04 nicht ok
10,954% 52,24 nicht ok
Kann ich beim Goal:=0.1101 noch irgenwie verändern, dass es nicht => 0.1101 ?
Hab das schon versuch. Leider ohne Erfolg :-(
Vielleicht hat hier ja irgendjemand ne Idee?
Komm leider nicht von alleine draus.
Danke im Voraus + Viele Grüße
Stefan
P.S: Wenn ich jetzt nur 10 Zeilen ausrechnen will bekomm ich immer einen Laufzeitfehler angezeigt. Kann man das noch irgenwie optimiert, dass wenn in Spalte L keine Summe eingetragen ist, keine Rechnung erfolgt und somit auch keine Fehlermeldung mehr erscheint?
DANKE
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige