Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1312to1316
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

Spalten Schleife für Solver Makro

Spalten Schleife für Solver Makro
15.05.2013 09:46:56
Wile
Hallo Zusammen
Bin gerade bei meiner Masterarbeit ein SolverMakro am generieren. Ich muss dabei eine Zahl (Varianz) mit gewissen Bedigungen minimieren. Das ist mir gelungen. Anstatt nun aber für jede Spalte ein neues Makro zu generieren, würde ich das gerne als Schleife lösen (von der erster Spalte (I) zur zweiten Spalte (J) hüpfen usw. - ca. 30 Spalten). Hier bin ich aber leider schon an meine VBA Grenzen gestossen.
--------------------------------
Sub EffFron()
SolverOk SetCell:="$I$35", MaxMinVal:=2, ValueOf:="0", ByChange:="$I$38:$I$44"
SolverAdd CellRef:="$I$33", Relation:=2, FormulaText:="$I$34"
SolverOk SetCell:="$I$35", MaxMinVal:=2, ValueOf:="0", ByChange:="$I$38:$I$44"
SolverAdd CellRef:="$I$63", Relation:=2, FormulaText:="1"
SolverOk SetCell:="$I$35", MaxMinVal:=2, ValueOf:="0", ByChange:="$I$38:$I$44"
SolverSolve (True)
End Sub

------------------------------
Herzlichen Dank für euer Hilfe.
Gruss Wile
Userbild

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten Schleife für Solver Makro
15.05.2013 09:57:37
Klaus
Hi Wile,
ungetestet mangels Musterdatei (dein Bild tippe ich nicht ab) könnte es so gehen:
Sub SolverJumpCols()
Const iColFirst As Long = 9 'in Spalte I anfangen (A=1, B=2 usw)
Const iColJump As Long = 30 '30 Spalten hüfpfen
Dim iCol As Long
For iCol = iColFirst To (iColFirst + iColJump)
SolverOk SetCell:=Cells(35, iCol).Address, MaxMinVal:=2, ValueOf:="0", ByChange:=Range( _
Cells(38, iCol), Cells(44, iCol)).Address
SolverOk SetCell:=Cells(35, iCol).Address, MaxMinVal:=2, ValueOf:="0", ByChange:="Range( _
Cells(38, iCol), Cells(44, iCol)).Address"
SolverAdd CellRef:=Cells(33, iCol).Address, Relation:=2, FormulaText:=Cells(34, iCol). _
Address
SolverOk SetCell:=Cells(35, iCol).Address, MaxMinVal:=2, ValueOf:="0", ByChange:=Range( _
Cells(38, iCol), Cells(44, iCol)).Address
SolverAdd CellRef:=Cells(63, iCol).Address, Relation:=2, FormulaText:="1"
SolverOk SetCell:=Cells(35, iCol).Address, MaxMinVal:=2, ValueOf:="0", ByChange:=Range( _
Cells(38, iCol), Cells(44, iCol)).Address
SolverSolve (True)
Next iCol
End Sub
Grüße,
Klaus M.vdT.

Anzeige
AW: Spalten Schleife für Solver Makro
15.05.2013 11:18:20
Wile
Hi Klaus
Der Code ist super. Habe nur noch ein Problem: Die Bedingung, dass die Summe der Akitenindices (MSCI...) 100% sein soll, funktioniert noch nicht. An was könnte das liegen?
Die Datei ist leider zu gross zum Hochladen. Ich könnte dir diese aber auch schnell schicken.
Sub EffFron()
Const iColFirst As Long = 9 'in Spalte I anfangen (A=1, B=2 usw)
Const iColJump As Long = 30 '30 Spalten hüfpfen
Dim iCol As Long
SolverReset
For iCol = iColFirst To (iColFirst + iColJump)
SolverOk SetCell:=Cells(35, iCol).Address, MaxMinVal:=2, ValueOf:="0", ByChange:=Range( _
Cells(38, iCol), Cells(61, iCol)).Address
SolverAdd CellRef:=Cells(33, iCol).Address, Relation:=2, FormulaText:=Cells(34, iCol). _
Address
SolverOk SetCell:=Cells(35, iCol).Address, MaxMinVal:=2, ValueOf:="0", ByChange:=Range( _
Cells(38, iCol), Cells(61, iCol)).Address
SolverAdd CellRef:=Range(Cells(38, iCol), Cells(61, iCol)).Address, Relation:=3, FormulaText:=" _
0"
SolverAdd CellRef:=Cells(63, iCol).Address, Relation:=2, FormulaText:="1"
SolverSolve (True)
Next iCol
End Sub

Und noch eine zusätzliche Ergänzung. Wie kann ich einen Stopp setzen. Z.B. nach 30 Wiederholungen?
Herzlichen Dank für deine Hilfe. Du hast mich tausend Schritte weiter gebracht.

Anzeige
AW: Spalten Schleife für Solver Makro
15.05.2013 11:59:34
Klaus
Hi Wile,
Die Bedingung, dass die Summe der Akitenindices (MSCI...) 100% sein soll, funktioniert noch nicht. An was könnte das liegen?
keine Ahnung, Solver kann ich nicht. Ich hab nur stumpf aus deinem Code die absoluten Zellbezeichnungen gegen variablen getauscht. Wenn dein Code vorher ging und jetzt nicht mehr, hab ich irgendwo einen Tippfehler gemacht.
Wie kann ich einen Stopp setzen. Z.B. nach 30 Wiederholungen?
Was meinst du mit STOP? Und was mit Wiederholungen? Der Code läuft jetzt 30 mal, von Spalte 9 bis Spalte 39. Die Anzahl der Spalten sowie die Anfangsspalte kannst du oben in den "Const" verändern.
Grüße,
Klaus M.vdT.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige