[Excel] Solver-Anwendung mit/ohne VBA

Zvoni

Erfahrenes Mitglied
Hallo zusammen,

wenn man in Excel mit dem Solver arbeitet, gibt es ja bekanntlich die Einschränkung von maximal 300 Nebenbedingungen.

Gilt diese Beschränkung auch, wenn ich die Solver-Objekte per VBA programmiere oder gilt diese Beschränkung nur, wenn ich das Dialog-Feld benutze?

Hintergrund: Ich habe eine Kalkulationstabelle mit Artikeln, bei denen unsere Einkäufer den günstigten Einkaufspreis eintragen. Jetzt haben wir Kunden, welche z.B. 100 verschiedene Artikel bei uns bestellen wollen, der Gesamtbestellwert aber einen Wert X nicht überschreiten darf.

Hier bietet sich ja Solver an, um folgendes zu tun: Suche mir die beste Kombination von Einkaufs- sowie Verkaufspreis heraus, bei denen folgende Kriterien erfüllt sind (Die Werte sind jetzt mal nur Beispiele):

Einkaufswert: 60.000 €
Gesamtverkaufswert <= 100.000 €
Mindestgewinn pro Artikel: 25 %

Das ergibt als Zielwert: Gewinn maximal
und pro Artikel 2 Nebenbedingungen (Gesamtwert max. 100.000 € sowie min. 25% Gewinn pro Artikel).
Mit dieser Einschränkung ist somit bei 150 Artikeln/Zeilen Schluss

Wie gesagt, mir gehts darum, ob ich eine Solver-Programmierung machen kann, welche mir nicht bei 300 Nebenbedingungen dicht macht, da Kalkulationstabellen mit 400 Artikeln oder mehr keine Seltenheit bei mir sind.

Ich hoffe ihr wisst Rat, weil Google hat mir diesbezüglich nicht viel mitgeteilt.
 
Grüezi Zvoni

VBA kann auch nicht mehr als über die GUI von Excel möglich ist (nur oft ein wenig schneller und flexibler).

Das Limit der Anzahl Nebenbedingungen im Solver lässt sich daher auch mit VBA-Porgrammierung nicht aufheben. Diese Begrenzung liegt im Solver-AddIn selber.
 
Danke Thomas.

Genau das habe ich befürchtet.

OK, die logische Folgefrage lautet nun: Wo bekomme ich nen Solver-Algorithmus her? Ich hab schon danach gegooglet aber irgendwie finde ich immer nur heraus, wie der Algo heisst, den Solver verwendet, aber ne genaue Beschreibung des Algos konnte ich bisher nicht finden.

Jemand ne Idee?
 
Zurück