Zielwertsuche nach mehreren Veränderbare großen

araj

Cadet 2nd Year
Registriert
Juni 2015
Beiträge
21
Ich versuche seit Tagen ein VBA-Script zum Laufen zu kriegen und mich in die Materie einzuarbeiten. leider ohne Erfolg. Ich kenne mich mit VBA nicht aus, und habe es mit viel Suchen nicht alleine hinbekommen.

Ich habe eine Tabelle mit einigen mess Daten. Hier soll nun der Nulldurchgang ermittelt werden, bei dem der Wert in der Spalte =0 wird?.

Hat jemand eine Erklärung bzw. Script mit dem das funktionieren kann?

Zu Aufgabe:
In Spalte E6-E10 stehen die Größen die ich Ändern kann.
In E50 steht mein Zielwert er soll =0 sein
Es gibt mehreren Lösungen wo die Größe Null wird, daher in Spalte H1 soll der erste Wert stehen, wann der Zielwert gleich null ist. In H2 der zweite und es sollen erste 5 Werte ermittelt werden.
Ich werde mich Freuen, wenn jemand helfen kann.
Vielen Dank.
 
Sprichst du hier von einem oder zwei Problemen? Im oberen Teil klingt es so als suchst du nur den ersten Wert kleiner 0 aus einem Datensatz.
Im Teil "Zu Aufgabe:" sprichst du von Parametern (E6-E10) welche einen Zielwert (E50) ergeben. Das klingt ja nach einem ganz anderen Problem. Kannst du deine Problemstellung etwas genauer erläutern? Evtl mit Beispiel
 
Vielen Dank für dein Antwort.

Es geht um ein Federsystem. Die Steifigkeit ist veränderbar und der Ausschlag muss null werden.
Was ich rechnen will ist, durch Eingabe von Eigenfrequenz „Veränderbare Größe“ , soll der Ausschlag Null werden. Ich kann für Eigenfrequenz beliebig viele Werte einsetzen. Die Eigenfrequenz soll dann ermittelt werden, wann der Ausschlag Null wird, und diese Wert soll dann gespeichert werden. Ich brauche erste 5 Werte, wo sich der Ausschlag gleich Null wird.
Ich hoffe ist jetzt Nachvollziehbar.
Danke
Ergänzung ()

Vielen Dank für dein Antwort.

Es geht um ein Federsystem. Die Steifigkeit ist veränderbar und der Ausschlag muss null werden.
Was ich rechnen will ist, durch Eingabe von Eigenfrequenz „Veränderbare Größe“ , soll der Ausschlag Null werden. Ich kann für Eigenfrequenz beliebig viele Werte einsetzen. Die Eigenfrequenz soll dann ermittelt werden, wann der Ausschlag Null wird, und diese Wert soll dann gespeichert werden. Ich brauche erste 5 Werte, wo sich der Ausschlag gleich Null wird.
Ich hoffe ist jetzt Nachvollziehbar.
Danke
 
Da bietet sich der Excel Solver an. Ist im Prinzip ein Verfahren, welches eine Zielzelle auf einen bestimmten Wert hin optimiert (hier E50=0) durch die Veränderung von anderen Zellen (hier E6-E10). Damit findest du zumindest den ersten Wert. Dann kannst du die Grenzen für die Optimierung anpassen, so dass du auch die anderen Resultate findest.

Soll es wirklich mit VBA gemacht werden rate ich dir dich mit dem Newton Verfahren auseinander zu setzen. Das ist genau dafür gemacht.
 
Vielen Dank. Mit Solver habe ich es auch versucht nur ich kann es nicht Automatisieren, weil ich 5 werten haben will.
Gibt es ein Möglichkeit es zu Automatisieren?
 
Mit SolverAdd die Randbedingungen so setzten, dass die letzte Lösung nicht mehr möglich ist. Dadurch wird dann die nächste Lösung gefunden. Schleife drum herum und fertig
 
Das hab ich auch versuch in dem ich die Nebenbedingung gesetzt habe, nur dann kam Fehler Meldung!!! Solver kann kein Lösung finden.
 
Dann gibt es folgende Möglichkeiten
  • statt Simplex den GRG Algorithmus verwenden (evtl auf Mehrfach Start setzen)
  • Grenzwerte optimieren, so dass Lösungen größer/kleiner der letzten Lösung möglich sind ("rumspielen")
  • andere Verfahren in VBA implementieren (z.B. Gauss-Newton, wobei nur für die Nullstellensuche auch schon das Newton Verfahren ausreichen würde)
 
Zuletzt bearbeitet:
Naja, deine Excel Datei enthält keine einzige Formel. So wird das nix. Der Solver kann ja nur funktionieren wenn hinter der Berechnung der Zielzelle eine Funktion steht.
 
Das sind Probleme bei den Grenzwerten. Teste mal GRG mit folgenden Randbed:
$C$$ <= 1000
$C$5 >= 130
zusätzl Mehrfachstart an
dadurch sollte sich schon die zweite Lösung finden lassen
 
einfach die aktuelle Lösung als unteren Grenzwert setzen (hier grob 5 auf die Lösung von 127 addieren und als untere Randbedingung eingeben) die obere Grenze großzügig wählen. Dann diese Lösung wieder als Grenze verwenden.

Die entsprechenden Funktionen für VBA gibts ja überall online zu finden
 
Vielen Dank. Ich versuch jetzt.
Eine Frage noch, wie kann ich die Ergebnis speichern?
Ergänzung ()

Vielen Dank. Ich versuch jetzt.
Eine Frage noch, wie kann ich die Ergebnis speichern?
 
Zuletzt bearbeitet:
Die Ergebnisse des Solvers einfach als Variable in VBA speichern und dann in eine Zelle schreiben
 
Zurück
Oben