Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Mathematica-Rechnung in Excel einbinden?

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Mathematica-Rechnung in Excel einbinden? (5026 mal gelesen)
Mar111
Mitglied
Ingenieur


Sehen Sie sich das Profil von Mar111 an!   Senden Sie eine Private Message an Mar111  Schreiben Sie einen Gästebucheintrag für Mar111

Beiträge: 25
Registriert: 16.05.2007

Excel97

erstellt am: 27. Jan. 2008 14:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

ich bin neu hier im Excel-Brett und wollte mal fragen, ob hier jemand eine Möglichkeit kennt, eine Berechnung des Mathe-Programmes „Mathematica“ in eine Excel Tabelle zu integrieren. Genauer gesagt will ich folgendes machen:

Ich habe in Mathematica ein Programm, welches nach Eingabe einiger Werte (nennen wir sie einfach mal a, b, c) einige andere Werte (nennen wir sie x, y, z) berechnet. Die Eingabewerte a, b, c liegen als Excel-Tabelle vor. Die Ausgabewerte x, y, z von Mathematica brauche ich ebenfalls zur weiteren Verwertung in Excel. Momentan muss ich für jede Zeile meiner Exceltabelle die Werte a, b, c händisch in mein Mathematica-Programm eingeben, die Berechnung laufen lassen und die ausgegeben Werte x, y, z ebenfalls von Hand in die Exceltabelle übertragen.

Da meine Tabelle nun sehr viele Zeilen hat, ist das recht aufwendig. Deshalb suche ich nach einer Möglichkeit, mein bestehendes Mathematica-Programm in Excel zu integrieren. Beim googeln bin ich auf das Zusatztool von Mathematica "MathLink für Excel" gestoßen, das (wenn ich’s richtig verstehe) genau diese Möglichkeit bietet. Leider habe ich nur eine sehr alte Mathematica Version (2.2) mit der dieses Zusatztool nicht läuft, mal ganz abgesehen davon das es natürlich einiges kostet. Deshalb meine Frage: kennt jemand eine andere Möglichkeit, ohne ein kostenpflichtiges Zusatztool, um mein Vorhaben zu realisieren? Kann man den Mathematica-Programmcode z.B. über ein Makro in Excel integrieren bzw. von Excel aus aufrufen? An meiner Ausdrucksweise merkt Ihr schon, dass ich von Makros/VBA (oder was es da sonst noch so alles gibt) bisher absolut keine Ahnung habe.

Im Netz habe ich zu diesem Thema außer dem besagten MathLink leider nichts gefunden. Deshalb würde ich gerne zuerst mal wissen, ob so etwas grundsätzlich überhaupt machbar ist und wenn ja, wie man es angehen müßte. Auch falls Ihr mein Vorhaben für nicht realisierbar haltet, wäre ich für entsprechendes feedback dankbar.


Gruß und schon mal Danke für eure Antworten
Martin

Ich habe vor kurzem die selbe Frage schon in einem Mathematica-Forum gestellt, aber dort konnte mir niemand weiterhelfen. Ich hoffe Ihr nehmt es mir nicht übel, dass ich deshalb mein Glück noch mal hier im Excel-Forum versuche.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 28. Jan. 2008 09:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mar111 10 Unities + Antwort hilfreich

Hallo Mar111,

willkommen   beim Excel-Brett!

Hm... Dieses MathLink-Tool scheint 'ne feine Sache zu sein - allerdings kann es deutlich mehr, als Du benötigst?! Nach meinem Verständnis möchtest Du folgendes tun.

  • a, b, c liegen in xls vor
  • a, b, c nach Mathematica schaufeln/von M. aus einlesen
  • a, b, c wird in Mathematica zu x, y, z (wie auch immer, ist hier egal)
  • x, y, z in xls zurückführen
Gegenfrage - kann Mathematica exportieren? Wenn ja, welche Formate? .txt, .csv oder sowas? Ist zwar umständlich, aber denkbar. Excel schluckt so manches ...

Erstmal muss das "händisch" laufen, die Automatisierung per Makro ist ein zweiter Schritt. Vermutlich ist Dir schon geholfen, wenn die nervige, zeitaufwändige und fehleranfällige Tipparbeit entfällt. Was ist mit dem klassischen Copy + Paste?

Frederik

------------------
DIN1055.de  |  Lastannahmen für Anwender

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mar111
Mitglied
Ingenieur


Sehen Sie sich das Profil von Mar111 an!   Senden Sie eine Private Message an Mar111  Schreiben Sie einen Gästebucheintrag für Mar111

Beiträge: 25
Registriert: 16.05.2007

Excel97

erstellt am: 28. Jan. 2008 11:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Paulchen,

ich Danke Dir für Deine Antwort. Deine Annahme

Zitat:
Nach meinem Verständnis möchtest Du folgendes tun.
  • a, b, c liegen in xls vor
  • a, b, c nach Mathematica schaufeln/von M. aus einlesen
  • a, b, c wird in Mathematica zu x, y, z (wie auch immer, ist [i]hier egal)
  • x, y, z in xls zurückführen

ist absolut korrekt.

Zu Deiner Frage:

Zitat:

kann Mathematica exportieren? Wenn ja, welche Formate? .txt, .csv oder sowas?

habe ich folgendes gefunden: http://reference.wolfram.com/mathematica/guide/ImportingAndExporting.html

Scheint also zu gehen. Gemacht hab ichs noch nie, da ich in Mathematica blutiger Anfänger bin. Ich habe bisher nur dieses eine Programm, das meine erforderlichen Berechnungen durchführt. Also angenommen man kann als .txt,… exportieren: wie könnte das ablaufen?

Zum Copy und Paste: Das Problem ist, dass ich nicht nur jeweils 3 Werte aus Excel nach Mathematica und zurück übertragen muss (a, b, c war nur mal als Platzhalter gedacht) sondern deutlich mehr. Außerdem wird mit der Exceltabelle laufend gearbeitet, d.h. die Werte a, b, c können sich laufend ändern. Und dann müssen über Mathematica auch jedes Mal die Werte x, y, z neu berechnet werden. Wenn diese Aktualisierung von x, y, z nicht irgendwie automatisiert abläuft, besteht immer die Gefahr, dass sie vergessen wird und außerdem ist die permanente händische Aktualisierung  vom Aufwand her nicht zu schaffen.

Meine Wunschvorstellung wäre es deshalb, dass sich in jeder Zeile meiner Excel Tabelle die Werte x, y, z automatisch (oder eventuell auch nach händischem Aufruf eines Makros oder ähnlichem) ändern, wenn sich die dazugehörenden Werte a, b, c geändert haben.

Grüße
Martin

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 28. Jan. 2008 12:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mar111 10 Unities + Antwort hilfreich

Danke schonmal für die Rückmeldung! Ein paar Abstriche musst Du schon machen: Die link-Freunde wissen genau, warum sie was dafür verlangen. Wenn ich Deinen link verfolge, lesen meine entzündeten Augen diese Zeilen:
Zitat:
Tabular & Spreadsheet Formats »
"Table"  ▪ "CSV"  ▪ "TSV"  ▪ "XLS"  ▪ "ODS"  ▪ "SXC"  ▪ ...
Der Klick auf xls zeigt: "Export creates Excel 2000 files." Mathematica erzeugt Excel-2000-Mappen ! Vorschlag: Probier' das erstmal aus und melde Dich nochmal, wenn's konkret in xls hakt.
Zitat:
Außerdem wird mit der Exceltabelle laufend gearbeitet, d.h. die Werte a, b, c können sich laufend ändern.
Das würde ich mit Vorsicht behandeln ; mag sein, dass das gut geht - ich traue dem Frieden nicht. Zumindest nicht blind.

Frederik

------------------
DIN1055.de  |  Lastannahmen für Anwender

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mar111
Mitglied
Ingenieur


Sehen Sie sich das Profil von Mar111 an!   Senden Sie eine Private Message an Mar111  Schreiben Sie einen Gästebucheintrag für Mar111

Beiträge: 25
Registriert: 16.05.2007

Excel97

erstellt am: 28. Jan. 2008 12:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi,
bin schon eifrig am schmökern.

Was meinst Du mit Deinem letzten Satz?

Zitat:
Das würde ich mit Vorsicht behandeln    ; mag sein, dass das gut geht - ich traue dem Frieden nicht. Zumindest nicht blind.

Frederik


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

carsten-3m
Mitglied
Dipl.-Ing. Mbau (Produktmanagement, Patent- und Normwesen)


Sehen Sie sich das Profil von carsten-3m an!   Senden Sie eine Private Message an carsten-3m  Schreiben Sie einen Gästebucheintrag für carsten-3m

Beiträge: 950
Registriert: 08.05.2007

Excel 2010

erstellt am: 28. Jan. 2008 12:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mar111 10 Unities + Antwort hilfreich

Als Methodiker versuche ich alle denkbaren Ansätze zu prüfen, also nicht lachen jetzt: Kann die Berechnung aus Mathematica evtl. komplett in das Excelblatt eingebunden werden, also quasi substituiert? Excel kann ganz hervorragend rechnen, vielleicht ist ja der Hin- und Hertransport der Zwischenergebnisse gar nicht erforderlich.

------------------
Seit Pro/E Version 1 dabei, auwei...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mar111
Mitglied
Ingenieur


Sehen Sie sich das Profil von Mar111 an!   Senden Sie eine Private Message an Mar111  Schreiben Sie einen Gästebucheintrag für Mar111

Beiträge: 25
Registriert: 16.05.2007

Excel97

erstellt am: 28. Jan. 2008 13:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo carsten-3m,

sicher ein guter Vorschlag, an den ich auch schon gedacht habe. Es wäre mir auch das liebste wenn das ginge. Aber es müssen u.a. Ableitungen von Funktionen berechnet werden und ich glaube nicht (lasse mich aber sehr gerne eines besseren belehren) das das in Excel geht.

Auf jeden Fall vielen Dank für Deine Anregung, ich kann jede davon brauchen.

Grüße
Martin

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 28. Jan. 2008 13:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mar111 10 Unities + Antwort hilfreich

Mit 
Zitat:
Das würde ich mit Vorsicht behandeln    ; mag sein, dass das gut geht - ich traue dem Frieden nicht. Zumindest nicht blind.
meine ich, dass ich es generell für äußerst riskant halte, wenn mehrere Leute gleichzeitig an einer Mappe arbeiten. Jaja, ich weiß schon, M$ sieht sowas vor, man kann (angeblich) mit "Versionen" arbeiten und diese zusammenführen und weiß der Kuckuck was sonst noch alles. Ist sicherlich gut gemeint.

Nur entweder bin ich (und zahlreiche andere, die es versucht haben und gescheitert sind) zu doof, die Gedanken von Bill und Co. ordentlich umzusetzen - oder es klappt schlichtweg nicht. Ich würde mich nicht darauf verlassen, dass nicht Werte verloren gehen. Gut, meine (schlechte) Erfahrungen beruhen auf Word; Excel dürfte sich hier allerdings ähnlich verhalten.

Bei Dir kommt die Import-Export-Machwas-Geschichte dazu, heißt: Die Wahrscheinlichkeit, dass irgendwo Fehler auftreten, xls sich aufhängt oder durch Schnittstellenprobleme was verschmissen wird, steigt. Ich lasse mich gerne eines Besseren belehren ... Mag sein, dass ich ängstlich bin - jedenfalls gilt: Testen, testen, testen.

Zu Deiner Frage bezüglich Ableitungen/Integrale: Mir ist keine "Bord"-Funktion bekannt. Evtl. gibt es dazu funktionierende AddIns, da es kein völlig neues Problem ist. Hier ist eine englische Quelle. Sind es immer die gleichen Funktionen f(x) usw. - oder ändern die sich ständig / zur Laufzeit? Wäre es denkbar, dass Du Dir die Ableitung(en) per Hand erstellst und in xls einbaust?

------------------
DIN1055.de  |  Lastannahmen für Anwender

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mar111
Mitglied
Ingenieur


Sehen Sie sich das Profil von Mar111 an!   Senden Sie eine Private Message an Mar111  Schreiben Sie einen Gästebucheintrag für Mar111

Beiträge: 25
Registriert: 16.05.2007

Excel97

erstellt am: 28. Jan. 2008 14:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Paulchen,

Zitat:
... dass ich es generell für äußerst riskant halte, wenn mehrere Leute gleichzeitig an einer Mappe arbeiten.

Da hast Du mich falsch verstanden. Es arbeiten nie mehrerer Leute gleichzeitig an der Tabelle . Mit meiner Aussage "Außerdem wird mit der Exceltabelle laufend gearbeitet..." meinte ich lediglich, dass ich laufend damit arbeite und sich die Werte von a,b,c somit ständig ändern (können). Und wenn ich dann jedesmal die Ausgabewerte x,y,z, händisch in Mathematica neu berechnen muss dann bin ich nur noch damit beschäftigt. Deshalb sollte die Berechnung von x,y,z möglichst automatisiert bzw. mit wenigen "Klicks" für jede Zeile der Tabelle ablaufen.

Zu den Funktionen:
Die Funktionen sind erst mal immer die selben. Deshalb ginge es prinzipiell schon, die Ableitungen einmal in Mathematica berechnen lassen und dann die fertige Ableitung in mein Excel sheet zu übernehmen. Allerdings sind die Ableitungen ellenlang und mit unzähligen Klammern verschachtelt. Wenn ich die abtippe ist unter Garantie irgendwo ein Tippfehler drin (bei copy/paste kriege ich in Excel nur wirres Zeug und die Mathematica Syntax stimmt eh nicht mit der Excel Syntax überein).
Außerdem habe ich neben den Ableitungen noch ein paar andere mathematische Operationen (Newtonsches Näherungsverfahren, Skalarprodukt von Vektoren bilden), die wohl in Excel nicht (so einfach) machbar sind.

Deshalb habe ich den Gedanken alle Berechnungen direkt in Excel durchzuführen, eigentlich verworfen.


Martin

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

carsten-3m
Mitglied
Dipl.-Ing. Mbau (Produktmanagement, Patent- und Normwesen)


Sehen Sie sich das Profil von carsten-3m an!   Senden Sie eine Private Message an carsten-3m  Schreiben Sie einen Gästebucheintrag für carsten-3m

Beiträge: 950
Registriert: 08.05.2007

Excel 2010

erstellt am: 29. Jan. 2008 10:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mar111 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Mar111:
...dass ich laufend damit arbeite und sich die Werte von a,b,c somit ständig ändern (können)...
Das spricht für eine integrierte Lösung, oder andersherum, gegen einen aufwändigen Datentausch.
Zitat:
Original erstellt von Mar111:
...Die Funktionen sind erst mal immer die selben...
Siehe oben.
Zitat:
Original erstellt von Mar111:
...Allerdings sind die Ableitungen ellenlang und mit unzähligen Klammern verschachtelt...
Es gibt doch augenscheinlich zwei Möglichkeiten - einfach und aufwändig. Einfach, also Daten immer händisch/teilautomatisiert hin- und herschubsen, macht dauerhaft Arbeit. Aufwändig, also alle Formalismen fehlerfrei in Excel bringen, macht ein mal Arbeit. Die Frage ist rein retorischer Natur: Zu welchem Lösungsweg möchte ich Dir raten?
Zitat:
Original erstellt von Mar111:
...Newtonsches Näherungsverfahren, Skalarprodukt von Vektoren bilden...
Da kann man mit sicherlich überschaubarem Aufwand sich in Excel Funktionen zusammenbauen, die solche Methoden "nachäffen". Ggf. helfen Seiten wie www.excelformeln.de  oder www.online-excel.de  oder oder. Bartsch könnte auch helfen.

------------------
Seit Pro/E Version 1 dabei, auwei...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mar111
Mitglied
Ingenieur


Sehen Sie sich das Profil von Mar111 an!   Senden Sie eine Private Message an Mar111  Schreiben Sie einen Gästebucheintrag für Mar111

Beiträge: 25
Registriert: 16.05.2007

Excel97

erstellt am: 29. Jan. 2008 14:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo carsten-3m,

nun Du hast natürlich Recht, dass ein aufwendiger Datenaustausch in meinem Fall sehr ungünstig ist. Je automatisierter, desto besser. Alle Berechnungen direkt von Excel durchführen zu lassen ist somit sicher eine gute Lösung. Ich bin aber bisher davon ausgegangen, dass Excel nicht in der Lage ist, die genannten erforderlichen Berechnungen alle durchzuführen. Deine Aussagen machen mir Mut, dass dem nicht so ist.


Ich habe auch mal versucht mit dem von Paulchen angeregten Datenimport/-export weiterzukommen. Die Befehle „import/export“ scheint es wohl erst ab Mathematica4 zu geben (ich habe nur 2.2), aber mit dem Befehl „write“ hab ich es schließlich hinbekommen meine Mathematicaergebnisse x, y, z in eine Excel-Datei schreiben zu lassen. Aber richtig weiterhelfen tut mir das nicht, denn ich muss weiterhin jede Rechnung händisch starten.

Auch wenn es also nicht wirklich eine befriedigende Lösung für mich ist, doch noch eine Frage zum Datenexport: In meinem aus Mathematica exportierten xls-file werden die exportierten Ergebnisse x, y, z alle in die gleiche Zelle geschrieben (d.h. für den ersten Berechnungsdurchlauf stehen alle 3 Werte in Zelle A1, für den 2.Durchlauf in A2, den 3. in A3, usw.). Ich möchte sie aber in getrennten Spalten haben (d.h. für den ersten Durchlauf in A1, B1, C1, für den 2.Durchlauf in A2, B2, C2, usw.). Kann man das in Excel auseinanderdröseln (es aus Mathematica schon spaltenweise zu exportieren kriege ich nicht hin)?


Meine Wunschvorstellung wäre es nach wie vor, mein Mathematica-Programm von Excel aus per Makro(?) aufzurufen und die Berechnungen automatisiert ablaufen zu lassen. So oder so ähnlich muss wohl auch das Tool MathLink funktionieren. Aber dies scheint wohl nicht so einfach möglich zu sein (hab ich mir ja schon gedacht, aber die Hoffnung stirbt zuletzt ), so dass ich wohl auf die zweitbeste Lösung mit dem integrieren aller Rechnungen in Excel zurückgreifen muss. Danke für die link-Tipps, mal sehen ob ich damit weiterkomme.

Martin


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 29. Jan. 2008 15:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mar111 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Mar111:
...werden die exportierten Ergebnisse x, y, z alle in die gleiche Zelle geschrieben [] Kann man das in Excel auseinanderdröseln...
Ja - Behelfslösung: Die Excel-Textfunktionen LINKS, RECHTS und TEIL in einer bzw. drei Hilfsspalte/n (die ausgeblendet werden können) leisten hier gute Dienste.

Frederik

------------------
DIN1055.de  |  Lastannahmen für Anwender

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mar111
Mitglied
Ingenieur


Sehen Sie sich das Profil von Mar111 an!   Senden Sie eine Private Message an Mar111  Schreiben Sie einen Gästebucheintrag für Mar111

Beiträge: 25
Registriert: 16.05.2007

Excel97

erstellt am: 29. Jan. 2008 20:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


export.xls.txt

 
Zitat:
Ja  - Behelfslösung: Die Excel-Textfunktionen LINKS, RECHTS und TEIL in einer bzw. drei Hilfsspalte/n (die ausgeblendet werden können) leisten hier gute Dienste.

...was es nicht alles gibt . Guter Tipp, nur da die von Mathematica an Excel übertragene Anzahl von Stellen leider nicht immer gleich ist, hab ich ein Problem. Und die Ermittlung des mittleren der 3 Werte klappt auch noch nicht. Mal schauen ob ich Mathematica noch beibringen kann, dass immer die gleiche Stellenzahl exportiert werden soll, bisher weigert es sich standhaft .
Martin

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 30. Jan. 2008 09:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mar111 10 Unities + Antwort hilfreich

Guten Morgen Martin,

puuuh... das ist der "Export" von Mathematica? Woher willst Du wissen, wieviele Stellen vor dem Komma Deine Werte haben? Da ist ja nicht einmal ein Leerzeichen oder ein Tab dazwischen ? Sieht mir sehr fehleranfällig aus! Guter Vorschlag Deinerseits: Erstmal den M-Export hinkriegen!

Die xls-Funktionen FINDEN und LÄNGE könnte Dir evtl. noch behilflich sein. Und FEST.

Frederik

------------------
DIN1055.de  |  Lastannahmen für Anwender

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

simsalabim
Mitglied
Fensterbauer


Sehen Sie sich das Profil von simsalabim an!   Senden Sie eine Private Message an simsalabim  Schreiben Sie einen Gästebucheintrag für simsalabim

Beiträge: 119
Registriert: 08.10.2004

Excel 2003

erstellt am: 04. Feb. 2008 12:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mar111 10 Unities + Antwort hilfreich

Hallo,

ich hatte mal folgendes Problem (stark vereinfacht dargestellt)
Eine Funktion x = a+b* ... irgendwas ... war eine einfach Funktion, allerdings wollte ich das nach a auflösen, und das Ergebnis waren ca. 3 Seiten a3-Querformat-Ausdrucke, die ein direktes, fehlerfreies "Abtippen" extrem unwahrscheinlich gemacht hätten. Mir kam allerdings zur Hilfe, dass die Formel immer wieder an unterschiedlichen Stellen die gleichen (oder ganz ähnliche) Ausdrücke enthielt.
Die Lösung: ich markierte mir diese jeweils gleichen Ausdrücke Textmarker-Farben auf dem Ausdruck. Da hatte ich z.B. (wieder nur eine "Hausnummer") im Nenner verschiedener Brücke den Ausdruck b sin(alpha) cos(gamma). Nun hab ich mir im Excel eine Funktion "rot" (vom roten Textmarker) programmiert, welcher ich b, alpha und gamma übergeben hatte und welche mir das Ergebnis dieser Berechnung übergeben hat.
Ich hab dann stellenweise auch Funktionen für "übergeordnete" Ausdrücke programmiert, also z.B. "gelb = rot(b, alpha, gamma) + c ... etc..., am Ende hatte ich das recht übersichtlich.
Natürlich ist nicht gesagt, dass das bei dir genauso umsetzbar ist (Voraussetzung wäre jedenfalls, dass Excel sämtliche Ausdrücke in der Ergebnis-Formel selbst berechnen kann, aber mir hatte dieser Ansatz geholfen. Freilich, du hast auch mehr als ein Ergebnis, da wird's mit dem Excel schon bissel schwieriger.

Grüße, Thomas

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Ex-Mitglied
Mar111
Mitglied
Ingenieur


Sehen Sie sich das Profil von Mar111 an!   Senden Sie eine Private Message an Mar111  Schreiben Sie einen Gästebucheintrag für Mar111

Beiträge: 25
Registriert: 16.05.2007

Excel97

erstellt am: 04. Feb. 2008 14:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


NewtonVerfahren.xls.txt

 
Hallo,

ich glaube ich sollte mal ein update zum aktuellen Stand meiner Bemühungen geben:

1) zum Datenexport von Math. zu Excel:

Zitat:
puuuh... das ist der "Export" von Mathematica? Woher willst Du wissen, wieviele Stellen vor dem Komma Deine Werte haben? Da ist ja nicht einmal ein Leerzeichen oder ein Tab dazwischen ? Guter Vorschlag Deinerseits: Erstmal den M-Export hinkriegen!

Mein Problem war, das ich ursprünglich versucht habe, alle Werte mit einem WRITE-Befehl zu exportieren. Dann werden die Zahlen alle am Stück in eine Excel-Zelle geschrieben und die Auftrennung ist schwer möglich, da die Anzahl Nachkommastellen nicht immer gleich ist (dies in Math. fix vorzugeben habe ich nicht geschafft. Mag sein, dass das in den neueren Versionen einfacher geht, ich hab nur den Befehl ROUND gefunden, der aber nur auf ganzzahlige Werte rundet und mir nicht wirklich weiterhilft). Man kann sich zwar behelfsmäßig Trennzeichen zw. den einzelnen Werten einbauen (z.b. indem man statt "x,y,z" --> "x,a,y,a,z" mit "a" als Trennzeichen exportiert. Dann weiß man wenigstens wo die einzelnen Werte anfangen und enden, aber die Aufdröselung in Excel mit den von Paulchen vorgeschlagenen Befehlen fuktioniert dann immer noch nicht aufgrund der unterschiedlicher Zahl von Nachkommastellen.
Einfacher wirds, wenn man jeden Wert mit einem seperaten WRITE-Befehl exportiert. Dann wird jeder Wert in eine seperate Excel-Zelle geschrieben, allerdings nicht spaltenweise nebeneinander (wie von mir benötigt) sondern zeilenweise untereinander. D.h. man muss die Werte dann halt in Excel wieder sortieren, was sicher recht einfach machbar ist. Ich hab das dann nicht weiter verfolgt, da der Datenexport ja wie in vorigen posts erwähnt nicht wirklich meine angestrebte Lösung ist.

Zitat:

Ich würde einen Export als CSV (Komma-getrennter-Wert) versuchen. Dann stehen alle Werte hoffentlich mit einem Komma getrennt...?


Wenn man jeden Wert per seperatem WRITE-Befehl exportiert, wie oben beschrieben, geht es auch wenn man als xls exportiert. Wenn man versucht alles über einen Befehl zu machen bringt csv keine Verbesserung. Aber trotzdem eine nützliche Anregung, Danke.


2) zur kompletten Berechnung in Excel (ohne Math.):

Zitat:
Original erstellt von simsalabim:
Hallo,
...und das Ergebnis waren ca. 3 Seiten a3-Querformat-Ausdrucke, die ein direktes, fehlerfreies "Abtippen" extrem unwahrscheinlich gemacht hätten...


...so geht es mir auch, nur sind es bei mir nicht "nur" 3 Seiten . Die ersten mehrzeiligen Ableitungen hab ich zwischenzeitlich fehlerfrei abgetippt (wie der Vergleich mit den Berechnungsergebnissen aus Math. zeigt), weitere ca. 40-50 folgen Dabei ist vor allem das Klammern setzen das Problem, da die Ausdrücke extrem verschachtelt sind (und leider keine wesntlichen Wiederholungen dabei wie bei Dir Thomas). Das eigentlich ärgerliche dabei ist aber nicht der große Zeitaufwand, sondern dass das ganze eben nicht allgemeingültig ist. Sprich wenn sich die Funktionen doch mal ändern sollten würde der Spass von vorne anfangen. Aber eine Möglichkeit in Excel direkt Funktionen abzuleiten habe ich leider nirgedns finden können (außer ein paar handgestrickten Lösungen für einfachste Grundfunktionen).

Erfreulich einfach hingegen ist das bilden von Skalarprodukten in Excel mittels des Befehles SUMMENPRODUKT.

Auch das Newtonsche Näherungsverfahren läßt sich recht einfach bewerkstelligen (siehe file). Für meine Zwecke denke ich wäre aber ein Makro hilfreicher, da ich noch nicht weiß, wie ich das ganze sonst in meine Berechnungstabelle am besten einbauen kann. Außerdem wäre dann die Anzahl der Iterationsschritte variabel entsprechend dem vorgegebenen Fehler. Ich habe im "Stöcker Taschenbuch Mathematik" sogar einen kompletten Programmcode dafür gefunden (siehe file), aber da ich mich mit der Excel-VBA-Syntax nicht auskenne, kann ichs nicht umsetzen. Ich habe auch die ganzen Excel/VBA-Seiten im Internet durchstöbert, aber nirgends ein fertiges Makro gefunden. Falls jemand doch eine Quelle kennt, bin ich für einen Tipp dankbar.

Martin

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 04. Feb. 2008 15:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mar111 10 Unities + Antwort hilfreich

Hallo Martin,

na, da hast Du ja schon einiges hinter Dir 

Zitat:
Ich habe im "Stöcker Taschenbuch Mathematik" sogar einen kompletten Programmcode dafür gefunden (siehe file)...
Drück' in Excel Alt + F11 (öffnet VBA-Umgebung), dann Einfügen - Modul. Dort hinein kopierst Du diesen rudimentären
Code:
Sub NaeherAnIsaac()

'Dim xn As Double 'nicht erforderlich
Dim eps As Double
Dim x As Double
Dim fehler As Double
Dim y As Double

    'Variablen belegen:
    x = InputBox("Startwert eingeben:", "Iteration", 1) '
    eps = InputBox("zulässiger Fehlre:", "Iteration", 0.1)
    'x = xn
    fehler = eps + 1
   
    'Schleife:
    While fehler > eps
        y = x - 0.1 'f(x) und f'(x) darfst Du selbst einbauen / Unterroutine(n)? ;-)
        fehler = Abs(y - x)
        x = y
    Wend

    'Ergebnis anzeigen:
    MsgBox "Wert für x: " & x, vbOKOnly + vbInformation, "Iteration"

End Sub


Das ist eine schnelle, dreckige Umsetzung Deines Files. Mit F8 kannst Du ihn im Einzelschritt ausführen, F5 rennt durch. Die Mathematik in VBA ist kein Hexenwerk! Bei Fragen...

Frederik

[Edit] Beim Stichwort "Iteration" fällt mir die Zielwertsuche ein - falls es die in xls97 schon gibt? Menü Extras - Zielwertsuche... oder auch der Solver [/Edit]

------------------
DIN1055.de  |  Lastannahmen für Anwender

[Diese Nachricht wurde von Paulchen am 04. Feb. 2008 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mar111
Mitglied
Ingenieur


Sehen Sie sich das Profil von Mar111 an!   Senden Sie eine Private Message an Mar111  Schreiben Sie einen Gästebucheintrag für Mar111

Beiträge: 25
Registriert: 16.05.2007

Excel97

erstellt am: 04. Feb. 2008 15:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von Paulchen:
Das ist eine schnelle, dreckige Umsetzung Deines Files.

1000Dank Frederik.   Ich würde sagen extrem schnell.

Gruß
Martin

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mar111
Mitglied
Ingenieur


Sehen Sie sich das Profil von Mar111 an!   Senden Sie eine Private Message an Mar111  Schreiben Sie einen Gästebucheintrag für Mar111

Beiträge: 25
Registriert: 16.05.2007

Excel97

erstellt am: 04. Feb. 2008 20:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


TabellemitMakro2.xls.txt

 
Hallo Frederik,

nochmals Danke für das super Makro. Ich habe mich zwischenzeitlich etwas näher damit befaßt und habe 2 klitzekleine Flüchtigkeitsfehlerchen gefunden (bitte nicht als Kritik verstehen, sondern nur der Vollständigkeit halber falls mal jemand anders auch hier nachschaut):

Code:

     x = InputBox("Startwert eingeben:", "Iteration", 1)
    ...
    'x = xn


es muss xn= InputBox... heißen (statt x)
und das ' vor x=xn muss weg (zumindest läufts bei mir sonst nicht).

 

Hierzu   

Code:

y = x - 0.1 'f(x) und f'(x) darfst Du selbst einbauen / Unterroutine(n)? ;-)


noch eine Frage: Um das Makro zu testen habe ich mal eine einfache Funktion f(x) und f'(x)direkt ins Makro eingegeben. Soweit klappt alles. Meine richtigen Fuktionen/Ableitungen sind dazu aber zu lang. Deshalb die Frage: wie geht das mit der Unterroutine? Es sollte so sein, dass das Makro automatisch abläuft und für jede Zeile meiner Tabelle den Wert xn+1 automatisch berechnet (siehe file).

       
Und interessehalber noch hierzu eine Frage (ich will ja nicht nur kopieren sondern auch verstehen was ich da mache):

Code:

    'Ergebnis anzeigen:
    MsgBox "Wert für x: " & x, vbOKOnly + vbInformation, "Iteration"


Was bedeutet das "vbOKOnly+vbInformation"?

Und wieso muss am Anfang der sub beim Zuweisen des Datentypes "double" xn keiner zugewiesen werden?


Zitat:
Beim Stichwort "Iteration" fällt mir die Zielwertsuche ein - falls es die in xls97 schon gibt? Menü Extras - Zielwertsuche... oder auch der[i] Solver

Die Zielwertsuche gibt es in xls97 schon, den Solver gibts (zumindest bei mir) nicht, aber man kann ihn lt. Excel-Hilfe zusätzlich installieren. Aber für den guten alten Isaac (netter Name übrigens von Deiner sub )brauche ich doch Dank des Makros beides nicht; war nur ein allgemeiner Hinweis von Dir, oder?


Das waren jetzt viele Fragen auf einmal, aber ich sitze halt zum ersten mal vor so einem Makro.

Danke,
Martin

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 05. Feb. 2008 09:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mar111 10 Unities + Antwort hilfreich

Das sind 'ne ganze Menge Fragen - es zeigt jedoch, dass Du Dich damit befasst/befassen willst . Eines vorab: Meine Antwort erfolgt aus Zeitgründen in zwei Teilen.

pt. I - Allgemeines

Konstruktive Kritik sehe ich gerne, nur immer drauf los! Allerdings muss ich widersprechen:

Zitat:
es muss xn= InputBox... heißen (statt x) und das ' vor x=xn muss weg (zumindest läufts bei mir sonst nicht).
Zu meiner Entschuldigung stehen im vorherigen Beitrag die Worte "schnell" und "dreckig" zu lesen, soll heißen: Nicht ausführlich getestet, sicherlich eleganter lösbar, als ausbaufähiger Ansatz zum selbst weiterbasteln gedacht, kein Anspruch auf Vollständigkeit und Richtigkeit oder gar fehlerfrei.

Am Rande bemerkt: "läuft bei mir nicht" hilft nix! Fehlernummer oder Fehlerbeschreibung dazu, damit der nächste weiß, was Du getan hast. Schließlich sitzen wir nicht nebendran und gucken Dir auf die Finger :-). Bei mir läuft's nämlich, exakt so wie gepostet.

Die Sache mit "x" und "xn" sehe ich ebenfalls anders. Deine "Vorgabe" war

Zitat:
INPUT xn (Startwert)
INPUT eps (zulässiger Fehler)
x:=xn

(aus Deiner ersten Mappe.) Was passiert? Der Wert "xn" wird eingegeben/erfragt. Dann wird "xn" an "x" übergeben - und taucht danach nie wieder auf! Alle weiteren Berechnungen beziehen sich nur und ausschließlich auf "x". Um die Lesbarkeit zu erhöhen und aus diversen anderen Gründen sind weniger Variablen manchmal mehr. Ich habe Deine Code aus Mappe2 laufen lassen - ohne "xn" - läuft tadellos. Also weg mit "xn".

Es gibt Subs und Functions. Die Sache mit der Unterroutine folgt in pt. II (außer, jemand anderes ist schneller?). Die Hilfe hilft für's Hintergrundwissen.

Zitat:
Was bedeutet das "vbOKOnly+vbInformation"?
vb für VisualBasic, OK für OK, Only für nur: Zeige nur den OK-Button. Information steht für das Bilchen "i". Lösch' mal das OKOnly oder das Information und drücke Strg+Leertaste...
Zitat:
Und wieso muss am Anfang der sub beim Zuweisen des Datentypes "double" xn keiner zugewiesen werden?
Weil es nicht gebraucht wird, siehe oben. Meine eigene Schlampigkeit wird Dir zum Verhängnis : Eigentlich sollte über der Sub noch Option Explicit stehen , das erzwingt eine ausdrückliche Variablendeklaration; bietet wiederum Vor- und Nachteile, doch ich schweife ab. Schreib' einfach Option Explicit drüber, und gut ist (erstmal).

Zielwert und Solver waren nur allgemeine Hinweise, richtig.

So long - Fortsetzung folgt ;-).
Frederik

------------------
DIN1055.de  |  Lastannahmen für Anwender

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mar111
Mitglied
Ingenieur


Sehen Sie sich das Profil von Mar111 an!   Senden Sie eine Private Message an Mar111  Schreiben Sie einen Gästebucheintrag für Mar111

Beiträge: 25
Registriert: 16.05.2007

Excel97

erstellt am: 05. Feb. 2008 11:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
...Fehlernummer oder Fehlerbeschreibung dazu, damit der nächste weiß, was Du getan hast.

Eine Fehlermeldung erhalte ich nicht und das Makro läuft auch durch, aber als Ergebnis erhalte ich immer x=0, egal welchen Startwert ich eingebe. Zugegebermaßen ist x=0 tatsächlich eine Nullstelle dieser Beispielfunktion, aber je nach Startwert müßte man auch die anderen beiden Nullstellen (bei Startwert z.B. 9 -->Nullstelle bei x=7,08 bzw. Startwert -4 -->Nullstelle bei x=-5,08) erhalten. Dies ist nicht der Fall.

Zitat:

Die Sache mit "x" und "xn" sehe ich ebenfalls anders. Deine "Vorgabe" war INPUT xn (Startwert)
INPUT eps (zulässiger Fehler)
x:=xn
(aus Deiner ersten Mappe.) Was passiert? Der Wert "xn" wird eingegeben/erfragt. Dann wird "xn" an "x" übergeben - und taucht danach nie wieder auf! Alle weiteren Berechnungen beziehen sich nur und ausschließlich auf "x". Um die Lesbarkeit zu erhöhen und aus diversen anderen Gründen sind weniger Variablen manchmal mehr. Ich habe Deine Code aus Mappe2 laufen lassen - ohne "xn" - läuft tadellos. Also weg mit "xn".

Stimmt alles. Die Zuordnung x:=xn ist auch korrekt. Ich meine nur, dass es bei der Eingabe des Startwertes xn=InputBox...heißen muss und nicht x. Denn die Variable für den Eingabewert lautet eben xn und nicht x.

Und wenn ich das ' vor x:=xn drin lasse bedeutet es doch, dass dass es sich nur um einen Kommentartext und keine auszuführende Rechnung handelt, oder nicht?

Erst wenn ich diese beiden Änderungen durchführe erhalte ich je nach Startwert alle 3 Nullstellen. Duchlaufen tut das Makro auch ohne die beiden Änderungen, aber Ergebnis ist dann halt fälschlicherweise immer x=0.

Und dazu

Zitat:
Zu meiner Entschuldigung stehen im vorherigen Beitrag die Worte "schnell" und "dreckig" zu lesen...

kann ich nur sagen, dass ich es bin der zu Danken hat für Deine klasse Unterstützung

Danke
Martin

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 05. Feb. 2008 12:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mar111 10 Unities + Antwort hilfreich

Hm... 
Zitat:
Denn die Variable für den Eingabewert lautet eben xn und nicht x.
Ja, das ist richtig. Weil Du ein Mensch bist. Der Computer - auch Deiner - ist eine Maschine. Und die kann (hoffentlich!) nicht eigenständig denken. Dem Rechner ist egal, womit Du ihn fütterst. Es ist nur für Dich von Bedeutung, weil xn eben anders "definiert" ist als x, schon klar. Nochmal: Der Wert xn wird nicht mehr benötigt, mit nichts verglichen, nicht mehr angezeigt, gar nix. Er macht nur den Code (der den Computer dazu bringt, etwas zu tun) für Dich als Menschen schlechter lesbar, weil unübersichtlicher.

Beispiel:
Ich brauche eine Variable a
Ich brauche eine Variable b
a = 1
b = a
Sag' mir, wie groß b ist?

Einfacher und gleichwertig, aber übersichtlicher und schneller, weil kürzer, ist:
Ich brauche eine Variable b
b = 1
Sag' mir, wie groß b ist?

Was mich ein wenig verwirrt: Ich lasse Deine sub mit und ohne x oder xn laufen und bekomme jedes (!!!) Mal nur die 7,08 in der MsgBox angezeigt. (Hier: xp SP 2 mit xls 2000, SP 3.) Deine (nicht vorhandene) Fehlermeldung ist insofern entschuldigt  .

Ja, das Hochkomma ' dient in VBA als Kommentarindikator, heißt: Diese Zeile wird nicht als Code interpretiert. Alles, was dahinter steht, kann hilfreich sein, die Absicht des Verfassers zu begreifen  oder unerwünschte Zeilen/Alternativen abzustellen. Wenn es bei Dir (nur) mit x und xn klappt, sollte "Dim xn As Double" ebenfalls verlangt werden - Option Explicit vorausgesetzt.

 

Zitat:
Mathematica-Rechnung in Excel einbinden?
ist das Thema dieses Beitrags. Allmählich kommen wir davon allerdings ganz schön ab - es müsste nun heißen "Iteration in Excel - ein paar Ansätze" oder so... Vielleicht sollten wir via PM weitermachen? Wie bekommst Du Deine 3 Nullwerte? [Edit] Oben steht's ja: "... je nach Startwert...", hat sich erledigt.[/Edit]
------------------
DIN1055.de  |  Lastannahmen für Anwender

[Diese Nachricht wurde von Paulchen am 05. Feb. 2008 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mar111
Mitglied
Ingenieur


Sehen Sie sich das Profil von Mar111 an!   Senden Sie eine Private Message an Mar111  Schreiben Sie einen Gästebucheintrag für Mar111

Beiträge: 25
Registriert: 16.05.2007

Excel97

erstellt am: 05. Feb. 2008 13:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

OK, lang hats gedauert, aber jetzt ist der Groschen gefallen.   Die Variable xn wird bei Dir überhaupt nie benutzt, deshalb ja auch die Zeile x:=xn (die hat mich verwirrt) mit ' versehen und keine Zuweisung des Datentyps bei xn erforderich. Jetzt ist alles klar und es funktioniert jetzt auch mit Deiner Syntax. Abhängig vom Startwert kriege ich (mit "Deiner" und mit "meiner" Syntax) alle 3 Nullstellen:
Startwert -unendlich bis -3 und 4: x=-5,8
Startwert -3 bis 4: x=näherungsweise 0
Startwert 4 bis unendlich: x=7,08
(nur ganzzahlige Startwerte getestet)

Nur komisch, das das bei Dir nicht so ist.

Zitat:

Wenn es bei Dir (nur) mit x und xn klappt, sollte "Dim xn As Double" ebenfalls verlangt werden - Option Explicit vorausgesetzt.


Das stimmt. Ohne "Option Explicit" gehts aber auch ohne "Dim xn As Double".


Ich denke damit dürfte erst mal alles klar sein, jetz muss ich schauen, dass ich das Makro in meine Tabelle integriert bringe und es mit dem automatischen Ablauf hinkriege. Falls Du mir da wie angekündigt später noch einen Tipp mit der Unterroutine hast freu ich mich drauf (gerne auch per PN wenn Dir das lieber ist).

Martin

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 05. Feb. 2008 16:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mar111 10 Unities + Antwort hilfreich


TabellemitMakro2.xls.txt

 
So, auf vielfachen Wunsch geht's weiter - wie angedroht  mit

pt. II - Unterroutine oder Subsub

VBA kennt Subs und Functions. Zweitere eignen sich hervorragend, um Werte zu berechnen. Ich habe folgendes gemacht:

  • Button im Tabellenblatt erstellt
  • eine Schleife über die Zeilen gelegt
  • es gilt immer noch: (Mehr oder weniger) schnell und vor allen Dingen dreckig!
  • Die Iteration an sich ist ausgelagert.
Die mathematische Richtigkeit wurde nicht geprüft! Im Anhang ist das umgesetzt.

Es gibt ein Problem: Wie kann man in VBA eine Excel-Formel auswerten? Würde mich für die Zukunft interessieren. Beispiel:

Code:
ActiveCell.FormulaR1C1 = "=RC[-9]*RC[-2]^3+RC[-8]*RC[-2]^2+RC[-7]*RC[-2]"

ist die Ausgabe des Makro-Rekorders für

=A6*H6^3+B6*H6^2+C6*H6


wenn der Cursor in Zelle J6 steht. Die FormulaR1C1 ist allerdings ein String und keine mathematische Formel. Wie komme ich an die Gleichung ran? Die Hilfe zu "Verwenden von Microsoft Excel-Tabellenfunktionen in Visual Basic" bringt mich nicht weiter. In der angehängten Mappe steht die Gleichung zweimal: 1x in xls, 1x in VBA. Das ist umständlich und unschön. Mit .Offset(0, -4) etc. zu arbeiten, ist in VBA eine Zumutung. Stehe ich auf dem Schlauch?

------------------
DIN1055.de  |  Lastannahmen für Anwender

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

carsten-3m
Mitglied
Dipl.-Ing. Mbau (Produktmanagement, Patent- und Normwesen)


Sehen Sie sich das Profil von carsten-3m an!   Senden Sie eine Private Message an carsten-3m  Schreiben Sie einen Gästebucheintrag für carsten-3m

Beiträge: 950
Registriert: 08.05.2007

Excel 2010

erstellt am: 06. Feb. 2008 09:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mar111 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Paulchen:
...Es gibt ein Problem: Wie kann man in VBA eine Excel-Formel auswerten?
Interessantes Thema. Ich stolpere allerdings noch über Deinen Denkansatz. Ich denk mal (sehr abstrakt) laut:

Ansatz Excel:
Eine Zelle mit einer Formel, die auf Eingangswerte aus anderen Zellen zurückgreift, zeigt üblicherweise das Formelergebnis in der Zelle mit der Formel. Dieses lässt sich, falls erforderlich, mit VBA auslesen.

Ansatz VBA:
Eingangsdaten werden zur Verfügung gestellt (durch Übergabe in Funktion, durch händische Eingabe per Dialog, durch Zuweisen in Variablen etc.), das Ergebnis wird durch VBA-Formalismen berechnet und ausgegeben (Zurückgabe an Funktionsaufruf, Ausgabe per Dialog oder in Variable etc.). Dieses lässt sich, falls erforderlich, in eine Excelzelle schreiben.

Ansatz Mix:
Eingangsdaten liegen vor, Formel wird vorab und nicht vorhersehbar vom Nutzer in eine Excelzelle geschrieben und soll dann rein in VBA weiterverwendet werden ohne auf Excelmöglichkeiten zuzugreifen. Ist das Dein Denkansatz?

Lösungsansatz hierzu: Die Excelzelle mit der Formel greift auf andere Excelzellen zu (Eingangsdaten). Das ist auch aus VBA nutzbar ohne die eigentlich Formel in VBA kennen zu müssen, da sowohl die Eingangsdaten zur Laufzeit "manipuliert" werden können (auch mehrfach) als auch die Formelzelle selbst. Auch das jeweilige Berechnungsergebnis lässt sich auslesen und weiterverarbeiten.

Bitte um kurze Erläuterung, vielleicht hab ich's gar nicht richtig verstanden.

------------------
Seit Pro/E Version 1 dabei, auwei...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 06. Feb. 2008 11:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mar111 10 Unities + Antwort hilfreich

Sehr schön, mach' das mal öfter mit dem "laut denken"! Eigentlich wäre das ein Grund für 'nen neuen Beitrag..?

Da waren einige Volltreffer dabei:

  • Ansatz Excel: Korrekt.
  • Ansatz VBA: Korrekt.
  • Ansatz Mix/Lösungsvorschlag: Jein - siehe unten.
Zitat:
Ansatz Mix:
Eingangsdaten liegen vor, Formel wird vorab und nicht vorhersehbar vom Nutzer in eine Excelzelle geschrieben und soll dann rein in VBA weiterverwendet werden ohne auf Excelmöglichkeiten zuzugreifen. Ist das Dein Denkansatz?
Entweder - oder. Problem ist ja, das (hier) - wie auch immer - automatisch iteriert werden soll. Dafür ist VBA erforderlich (Schleifenbildung). Mir ist klar, dass ich die Zellen in xls, die die Eingangsdaten beinhalten, abfragen kann. Range/Cells/benannter Bereich oder sowas, zeilenweise durchlaufen. Nur scheue ich erstmal die Mühe, weil mir das recht umständlich vorkommt.

Entweder - oder heißt auch: Es sollte vermieden werden, die Formel(n) mehrfach - nämlich in xls und in VBA - eingeben zu müssen. Excel allein klappt aus o.g. Gründen nicht. Eine elegante Lösung ist gesucht. Ich stelle mir gerade vor, dass es irgendwann in unbestimmter Zukunft durchaus vorkommen kann, dass jemand 'ne Gleichung mit sagen wir 20 Eingangsparamtern abarbeiten will... Problem ist auch, dass die Eingangsdaten (aus xls) für die Iteration in VBA erforderlich sind. Wenn das von xls errechnete Ergebnis in die Iteration eingeht, so ist es fix, unveränderbar.

Schön wäre es also, wenn es eine Möglichkeit gäbe, die Formel, die in xls bereits vorliegt, mit VBA möglichst einfach auszulesen (und zu berechnen).

Zitat:
Auch das jeweilige Berechnungsergebnis lässt sich auslesen und weiterverarbeiten.
möchte ich umformulieren: Nur das jeweilige Berechnungsergebnis lässt sich auslesen und weiterverarbeiten - oder nur die Formel, als String.

Zusammenfassend kann ich sagen: Ja, Du hast meinen Denkansatz richtig verstanden .

------------------
DIN1055.de  |  Lastannahmen für Anwender

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

carsten-3m
Mitglied
Dipl.-Ing. Mbau (Produktmanagement, Patent- und Normwesen)


Sehen Sie sich das Profil von carsten-3m an!   Senden Sie eine Private Message an carsten-3m  Schreiben Sie einen Gästebucheintrag für carsten-3m

Beiträge: 950
Registriert: 08.05.2007

Excel 2010

erstellt am: 06. Feb. 2008 14:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mar111 10 Unities + Antwort hilfreich


excelformel-in-vba.xls.txt

 
Okay, vielleicht bin ich auch nicht wissend genug, aber ich begreife den Denkansatz, nicht aber das Ziel. Ich hab mal, sehr quick and dirty, eben flott was gebastelt, dass vielleicht Licht ins Dunkel der Agumentation bringt (siehe Angang).

Excel:
Es liegen vor, rein beispielhaft: 2 konstante und eine zu ermittelnde Variable, sowie eine Formel und ein Zielergebnis. Alles wie gewohnt in Excel manipulierbar, sprich, auch die Formel kann beliebig eingegeben werden. Leider liegt hier ein Optimierungsproblem vor, das Excel selbst nur per #Zielwertsuche lösen könnte.

VBA:
Hier wird alles oben erwähnte ausgelesen, nur (interessanterweise) die Formel nicht, stattdessen reicht zum Start das Formelergebnis. Eine Schleife variiert nun eine (lausig bestimmte, nicht lachen) Schrittweite, um das Optimierungsproblem zu lösen. Und zwar ausschließlich durch Berechnung der Formel in Excel und ohne jegliche Kenntnis derselben. Kommt die Schleife an ein hinreichend exaktes Ergebnis, springt das Makro ohne weitere Aktion ans Ende.

Das war mein Denkansatz zum Thema. Wie von Dir gewünscht, ohne doppelte Datenhaltung der Formel, aus VBA heraus, aber eben doch unter Nutzung der Excelfunktionalität. Es kamen nur meine rudimentären Programmierkenntnisse zur Anwendung, bestimmt geht das alles viel eleganter.

------------------
Seit Pro/E Version 1 dabei, auwei...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 06. Feb. 2008 18:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mar111 10 Unities + Antwort hilfreich

Quick and clean! Du musst Dich nicht verstecken. Dein Beispiel ist ordentlich gemacht, nachvollziehbar, Zweck erfüllt. Zu lachen gibt's da mal gar nix; und unter "rudimentär" verstehe ich was anderes.

Deine Lösung funktioniert. Ich wollte immer die Formel ändern, nicht 'ne Variable . Vielleicht ist das der Grund für meine lange Leitung. So richtig ist der Groschen noch nicht gefallen. Jedenfalls lege ich mir das mal unter's Kopfkissen und schlafe 'ne Nacht drüber - oder auch zwei. Das Ziel ist nach meiner derzeitigen Auffassung erreicht: Der "Startwert" c wird ermittelt, das könnte übertragbar sein. Da kommt noch was, ich will da in Ruhe dran knabbern. 

Was wohl Martin dazu meint? Nicht, das die letzten vier Beiträge über das Ziel hinausschießen?!

Danke,
Frederik

------------------
DIN1055.de  |  Lastannahmen für Anwender

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Thomas Harmening
Moderator
Arbeiter ツ




Sehen Sie sich das Profil von Thomas Harmening an!   Senden Sie eine Private Message an Thomas Harmening  Schreiben Sie einen Gästebucheintrag für Thomas Harmening

Beiträge: 2897
Registriert: 06.07.2001

Das Innerste geäussert
und aufs Äusserste verinnerlicht

erstellt am: 06. Feb. 2008 18:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mar111 10 Unities + Antwort hilfreich

Zielwertsuche als Code
Code:
B4 = von XL veränderbarer Wert
B5 = Formel
B6 = gewünschtes Ergebnis

Range("B5").GoalSeek Goal:=Range("B6"), ChangingCell:=Range("B4")
aka Cells(5, 2).GoalSeek Goal:=Cells(6, 2), ChangingCell:=Cells(4, 2)


habe das Thema nur kurz überflogen und die Bsp. Mappe angeschaut - kann also sein, ich bin O.T. ;-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mar111
Mitglied
Ingenieur


Sehen Sie sich das Profil von Mar111 an!   Senden Sie eine Private Message an Mar111  Schreiben Sie einen Gästebucheintrag für Mar111

Beiträge: 25
Registriert: 16.05.2007

Excel97

erstellt am: 06. Feb. 2008 20:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

 
Zitat:
Original erstellt von Paulchen:
Was wohl Martin dazu meint? Nicht, das die letzten vier Beiträge über das Ziel hinausschießen?!

Ich habe die Diskussion heute mit Interesse verfolgt, aber da ich zur Lösung des Problems leider nichts beitragen kann, habe ich mich zurückgehalten.

Ich denke jedoch, für meine Anwendung ist es in jedem Fall erforderlich, dass die Funktion f(x) und deren Ableitung f'(x) nicht im Makro nochmal eingegeben werden müssen, wie es in Deiner Beispielmappe von gestern (Post von 16:17Uhr) der Fall ist. Wenn ich es richtig sehe wird dort die Funktion zwar aus dem eigentlichen Unterprogramm "Reihert Isaac" in die Function "Futter" ausgelagert,  aber dort muss für jede auszuwertende Tabellenzeile die jeweilige Funktion quasi im "Futterspeicher" hinterlegt werden, die dann, abhängig davon in welcher Zeile der Curser steht, ausgewertet wird. (Einschub: wenn das ganze so funktionieren soll wie ich denke, muss irgendwo im Aufruf der function "Futter" noch ein Fehler drin stecken, den ich noch nicht gefunden habe. Denn auch als Ergebnis der zweiten Tabellenzeile werden mir die Nullstellen der Funktion aus Zeile 1 ausgegeben obwohl in case2 ja die Funktion aus Tabellenzeile 2 hinterlegt ist).


Mit den einfachen Funktonen in der Beispielmappe wäre das noch machbar, ich aber habe folgendes Problem:

-meine tatsächlichen Funktionen/Ableitungen sind deutlich länger mit mehr Parametern
-ich müßte für jede Zeile der Tabelle (ca. 500, weiter wachsend) die Funktion in der function hinterlegen
-die Parameter (in der Beispielmappe a-g)sind Eingabewerte in meiner Tabelle, d.h. ändert sich die Eingabe, dann würde die in der function hinterlegte Funktion nicht mehr stimmen und müßte händisch angepaßt werden. Diese Datenredundanz wäre meines erachtens tödlich und schreit geradezu nach Fehlern.

Somit muss meiner Ansicht nach zwingend die Funktion aus Excel in VBA eingelesen werden, ohne erneute Eingabe. Ob euer angedachter Ansatz zu diesem Ziel führt, kann ich momentan noch nicht nachvollziehen, aber es hört sich schon mal gut an 

Gruß und Danke an alle fleißigen Helfer
Martin


Ich würde eure Arbeit ja gerne noch wenigstens mit ein paar ü's honorieren, aber ich hab die Maximalzahl schon ausgeschöpft.


edit: hatte Begriffe sub und function verwechselt-->korrigiert

[Diese Nachricht wurde von Mar111 am 07. Feb. 2008 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

carsten-3m
Mitglied
Dipl.-Ing. Mbau (Produktmanagement, Patent- und Normwesen)


Sehen Sie sich das Profil von carsten-3m an!   Senden Sie eine Private Message an carsten-3m  Schreiben Sie einen Gästebucheintrag für carsten-3m

Beiträge: 950
Registriert: 08.05.2007

Excel 2010

erstellt am: 07. Feb. 2008 10:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mar111 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Thomas Harmening:
Zielwertsuche als Code[code]
Danke Thomas! War zwar nur ein Beispiel und nicht tatsächlich Thema der Diskussion, trotzdem lernen wir alle gern dazu 

------------------
Seit Pro/E Version 1 dabei, auwei...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 08. Feb. 2008 08:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mar111 10 Unities + Antwort hilfreich

  Eine Lösung siehe unten 

@Thomas: Nein, kein O.T., Volltreffer. Ein Einzeiler - von Dir bin ich sonst Formeln mit mehreren Zeilenumbrüchen gewohnt...

Er tut das gleiche wie carsten-3ms Ansatz. Wobei die Idee von carsten-3m als ausbaufähiges Beispiel dient, das sich auf mehrere Zellen ausweiten lässt, während die Zielwertsuche nur eine Zelle betrachten kann. Aus diesem Grund wurde weiter oben der Solver angesprochen. Ist da jemand fit drin?

 

Zitat:
Denn auch als Ergebnis der zweiten Tabellenzeile werden mir die Nullstellen der Funktion aus Zeile 1 ausgegeben obwohl in case2 ja die Funktion aus Tabellenzeile 2 hinterlegt ist
Kann ich nicht nachvollziehen. Wenn Du in xls zwei Zellen markierst und den Button drückst, sollte der Zähler i in der sub irgendwann mal den Wert zwei annehmen? Mach' mal folgendes: Öffne die Mappe TabellemitMakro2.xls; Alt + F11 bringt Dich zum VBA-Editor. Im Navigationsbereich Modul1 und darin die Private Sub "ReihertIsaac" suchen. In der vierten Zeile von unten sollte stehen: i = 1 + i. Jetzt klickst Du mit der linken Maustaste in den senkrechten grauen Bereich links vom Code - es sollte ein brauner Punkt auftauchen, die Zeile wird ebenfalls farbig hinterlegt. Alternativ: F9 oder Menü Debuggen - Haltepunkt ein/aus.

Drücke F5, der Code wird bis zum Breakpoint ausgeführt. Jetzt lass' die Maus einfach mal über dem i stehen: Ein Tooltip zeigt "i = 1". Drücke F8, die Zeile wird ausgeführt, wieder die Maus über's i, Tooltip: "i = 2". Klappt das?

OK, die doppelte Eingabe der Funktionen (in VBA und Excel) scheidet definitiv aus. Am Rande würde mich interessieren: Wie viele Parameter (also Zellen) hat denn Deine längste Gleichung? 5 - oder 50? Und was ist aus der ursprünglichen Idee Export aus / Import von Mahtematica geworden?

Nach einer weiteren Nacht ist mir noch was eingefallen. Das Zauberwort heißt:

=== Benutzerdefinierte Funktion ===

Sie wird in VBA festgelegt und kann von Excel wie eine "normale" Bordfunktion genutzt werden. (OK, die Hilfe und Paramterbeschreibung sind weniger komfortabel; da hilft der Franzose.) Es ist der umgekehrte Weg zu meinem ersten Gedankengang, heißt: Wir zäumen das Pferd von hinten auf. Nicht die Excel-Funktion wird in VBA eingelesen, sondern die in VBA definierte Funktion wird von Excel genutzt. Das zieht dann so aus:

Code:
Public Function N_MyFunc1(a As Double, b As Double, c As Double, d As Double, e As Double, _
f As Double, g As Double, x As Double, eps As Double) As Double

Dim fehler As Double
   
    fehler = eps + 1
   
    While fehler > eps
        N_MyFunc1 = x - (a * x * x * x + b * x * x + c * x) / (e * x * x + f * x + g)
        fehler = Abs(N_MyFunc1 - x)
        x = N_MyFunc1
    Wend

End Function


Das richtige Ergebnis wird sofort in xls angezeigt! Diesen Code fügst Du in ein beliebiges Modul ein. Mathematisch ist nahezu alles drin, VBA kennt zahlreiche Operationen (Application.Pi, Winkelfunktionen etc.), natürlich auf Englisch. Ein wenig wirr sehen die mehrzeiligen Eingangsparameter aus, da ist bei der Erstellung Disziplin gefragt. Aus Excel heraus lassen sie sich dann komfortabel aufrufen: Menü Einfügen - Funktion - Benutzerdefiniert, Funktion auswählen - hier also N_MyFunc1.

Die Funktion muss nur ein Mal definiert werden. Da Excel und VBA die Funktion kennen und nutzen können, stehen alle Möglichkeiten offen  . Einmalige Eingabe bedeutet weniger Arbeit und weniger Fehler. Ich nehme an, das entspricht Deinen Vorstellungen. Der Rest steht und fällt mit der Länge Deiner Gleichungen und der Lust, zig Funktionen mit sinnvollen Namen zu erstellen.

Ich habe das mit N_MyFunc1 getestet. Sobald Du einen Eingabewert (a, b, c...) änderst, will Excel standardmäßig alles - wirklich alles neu berechnen. Das kann dauern. Sinnvoll ist hier u. U., unter Extras - Optionen - Berechnung - Berechnung manuell einzustellen. Du änderst alle Deine Parameter und drückst dann F9 (berechnen). In der Statusleiste am unteren Bildschirmrand steht dann "Bereit" und "Berechnen" zu lesen. Über die Tastenkombination Strg + Pause kannst Du die Ausführung des/der Makros unterbrechen. (Testlauf für die erste Gleichung in der ersten Zeile mit x = 9: Mit a = 1/6 erscheint prompt 7,08; mit a = 1 dauert's; mit a = 1/7 kommt fix 7,75 heraus.)

Die Iteration kostet Zeit und Rechenleistung. Je nach Wahl Deiner Startwerte kann die Rechnerei die Kiste so richtig ins Schwitzen bringen. Es wäre deshalb vielleicht sinnvoll, diese Leistungsfresser in Sub-Subs auszulagern und nur bei echtem Bedarf anzusteuern.

Meine Befürchtung ist, das vielleicht doch Mathematica das "bessere" Werkzeug für die Berechnungen ist. Nun hast Du erstmal Futter, nehme ich an?! Ich bin gespannt, wie's weitergeht.

[Edit: Rechtschreibfehler gefunden und behoben]

Gruß,
Frederik

------------------
DIN1055.de  |  Lastannahmen für Anwender

[Diese Nachricht wurde von Paulchen am 08. Feb. 2008 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mar111
Mitglied
Ingenieur


Sehen Sie sich das Profil von Mar111 an!   Senden Sie eine Private Message an Mar111  Schreiben Sie einen Gästebucheintrag für Mar111

Beiträge: 25
Registriert: 16.05.2007

Excel97

erstellt am: 08. Feb. 2008 12:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Frederik,

Zitat:
Wenn Du in xls zwei Zellen markierst und den Button drückst, sollte der Zähler i in der sub irgendwann mal den Wert zwei annehmen? Mach' mal folgendes: Öffne die Mappe TabellemitMakro2.xls; Alt + F11 bringt Dich zum VBA-Editor. Im Navigationsbereich Modul1 und darin die Private Sub "ReihertIsaac" suchen. In der vierten Zeile von unten sollte stehen: i = 1 + i. Jetzt klickst Du mit der linken Maustaste in den senkrechten grauen Bereich links vom Code - es sollte ein brauner Punkt auftauchen, die Zeile wird ebenfalls farbig hinterlegt. Alternativ: F9 oder Menü Debuggen - Haltepunkt ein/aus.

Drücke F5, der Code wird bis zum Breakpoint ausgeführt. Jetzt lass' die Maus einfach mal über dem i stehen: Ein Tooltip zeigt "i = 1". Drücke F8, die Zeile wird ausgeführt, wieder die Maus über's i, Tooltip: "i = 2". Klappt das?


Ja das klappt. Mein Fehler war, dass ich um die Nullstelle der zweiten Tabellenzeile zu erhalten nicht beide Felder (L6+L7) gleichzeitig markiert habe, sondern nur Feld „L7“. Also Problem somit erledigt, Danke.


Zitat:
Am Rande würde mich interessieren: Wie viele Parameter (also Zellen) hat denn Deine längste Gleichung? 5 - oder 50?

Damit wir vom gleichen sprechen: es geht um die Anzahl der Parameter a-d (dort also 4 Stück) in der Beispielmappe? Dann hat meine längste reale Funktion 18 Stück. Ich möchte der Vollständigkeit halber noch erwähnen, dass die Funktionen nicht nur Potenzen x^n wie in der Beispielmappe enthalten, sondern auch Winkelfunktionen (sin/cos/tan).


Zitat:
Und was ist aus der ursprünglichen Idee Export aus / Import von Mathematica geworden?

Diesen Weg habe ich in den letzten Tagen nicht weiter verfolgt (siehe post vom 4.Feb 14:35Uhr). Problem dabei ist, dass ich jede Tabellenzeile (momentan ca. 500, wächst noch) einzeln in Math. berechnen muss. D.h. ich nehme die Eingabewerte für Math. aus der Tabelle, trage sie händisch (copy/paste) in Math. ein (Import der Daten von Excel zu Math. habe ich bisher mit meiner alten Mathematica-Version 2.2 nicht hinbekommen, ist glaube ich auch erst ab Math-Version 4 möglich). Der Export zurück zu Excel würde, wie in besagtem post beschrieben, einigermaßen funktionieren, wobei die Daten in Excel noch sortiert werden müssen, da der Export nur zeilenweise klappt und ich die Werte spaltenweise brauche.

Lange Rede kurzer Sinn: wenn ich die Tabelle einmal durchrechnen müsste, wäre der Export ein einigermaßen gangbarer Weg. Da die Tabelle aber „lebt“, sprich sich dauernd Eingabewerte ändern, käme ich mit ständigem Nachrechnen nicht hinterher. Angenommen ich ändere nur einen einzigen der Eingabewerte pro Zeile (und das muss/will ich sehr oft machen) um zu sehen, wie sich die Ergebnisse dann verändern, dann rechne ich die kompletten 500Zeilen neu durch. Das ist ein Ding der Unmöglichkeit. Das Ziel muss es eigentlich wie schon gesagt sein, dass sich bei Änderung der Eingabewerte die Ausgabewerte von selbst berechnen (eben so wie wenn eine ganz normale Berechnung mit einer Excelformel stattfinden würde). Ein paar zusätzliche Klicks um ein Makro in Gang zu setzen (das die komplette Tabelle durchrechnet) wären auch kein Beinbruch. Wenn diese paar Klicks aber für jede Tabellenzeile notwendig sind (d.h. 500mal um die Tabelle einmal neu durchzurechnen) wird’s schon kritisch.

Zitat:

Nach einer weiteren Nacht ist mir noch was eingefallen. Das Zauberwort heißt:

=== Benutzerdefinierte Funktion ===



Danke für den Tip. Das muss ich mir erst mal noch genauer anschauen, bevor ich was dazu sagen kann.


Zitat:

Meine Befürchtung ist, das vielleicht doch Mathematica das "bessere" Werkzeug für die Berechnungen ist.

Mit Sicherheit ist es das . Nur kann ich dort eben nicht eine ganze Tabelle auf einmal berechnen, sondern nur jede Tabellenzeile einzeln. Und das ist wegen der permanent neu erforderlichen Nachrechnungen hier nicht machbar.


Gruß und Danke
Martin

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 08. Feb. 2008 12:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mar111 10 Unities + Antwort hilfreich

Hey Martin,

das nennen ich ein vorbildliches Feedback. So soll es sein.

Zitat:
Ich möchte der Vollständigkeit halber noch erwähnen, dass die Funktionen nicht nur Potenzen x^n wie in der Beispielmappe enthalten, sondern auch Winkelfunktionen (sin/cos/tan)
Nur für den Fall: Ich erlebe häufig Kollegen, die sich wundern, warum Excel so "komisch rechnet"; ich sage: Bogenmaß ungleich Gradmaß und, da Excel ein "wissenschaftliches" Programm ist, rechnet es nunmal im Bogenmaß. Wie sich das dann im Zusammenspiel mit VBA gestaltet, weiß ich selbst nicht, nehme jedoch an, dass sich das durch Herumprobieren schnell herausfinden lässt.
Zitat:
Der Export zurück zu Excel würde, wie in besagtem post beschrieben, einigermaßen funktionieren, wobei die Daten in Excel noch sortiert werden müssen, da der Export nur zeilenweise klappt und ich die Werte spaltenweise brauche.
Kein Problem, Excel kann auch transponieren; ließe sich ebenfalls per Makro ausführen, wenn die Daten in einer vernünftigen Form vorliegen.

Also keine 500 Klicks, verstanden ;-). Danke auch für die ausführliche Beschreibung der Hintergründe!

------------------
DIN1055.de  |  Lastannahmen für Anwender

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mar111
Mitglied
Ingenieur


Sehen Sie sich das Profil von Mar111 an!   Senden Sie eine Private Message an Mar111  Schreiben Sie einen Gästebucheintrag für Mar111

Beiträge: 25
Registriert: 16.05.2007

Excel97

erstellt am: 08. Feb. 2008 12:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von Paulchen:
Nur für den Fall: Ich erlebe häufig Kollegen, die sich wundern, warum Excel so "komisch rechnet"; ich sage: Bogenmaß ungleich Gradmaß ...

Du denkst ja echt an alles, worüber ein Anfänger wie ich stolpern könnte . Dies gehört aber glücklicherweise zu den Dingen, die ich mittlerweile beherrsche. Beim ersten Mal bin ich aber auch drauf reingefallen .

Gruß
Martin

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mar111
Mitglied
Ingenieur


Sehen Sie sich das Profil von Mar111 an!   Senden Sie eine Private Message an Mar111  Schreiben Sie einen Gästebucheintrag für Mar111

Beiträge: 25
Registriert: 16.05.2007

Excel97

erstellt am: 10. Feb. 2008 19:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Frederik,

ich habe mir zwischenzeitlich die benutzerdefinierte Funktion näher angeschaut.


Zitat:
Sobald Du einen Eingabewert (a, b, c...) änderst, will Excel standardmäßig alles - wirklich alles neu berechnen.

Was verstehst Du in diesem Fall unter alles, das Du es so betonst? Sobald ich irgendeinen Eingabewert ändere, egal ob einen der Parameter a-g, den Startwert oder die Fehlerschranke eps, muss halt die Rechnung neu durchgeführt werden,...oder???. Dabei konnte ich bei der einfachen Beispielmappe bisher nie eine merkbare Zeitverzögerung feststellen, bis das neu berechnete Ergebnis erscheint.


Zitat:
Das kann dauern. Sinnvoll ist hier u. U., unter Extras - Optionen - Berechnung - Berechnung manuell einzustellen. Du änderst alle Deine Parameter und drückst dann F9 (berechnen). In der Statusleiste am unteren Bildschirmrand steht dann "Bereit" und "Berechnen" zu lesen. Über die Tastenkombination Strg + Pause kannst Du die Ausführung des/der Makros unterbrechen. (Testlauf für die erste Gleichung in der ersten Zeile mit x = 9: Mit a = 1/6 erscheint prompt 7,08; mit a = 1 dauert's; mit a = 1/7 kommt fix 7,75 heraus.)

Die Iteration kostet Zeit und Rechenleistung. Je nach Wahl Deiner Startwerte kann die Rechnerei die Kiste so richtig ins Schwitzen bringen.


Ich hab verschiedenes (ohne auf manuell umzustellen) probiert (auch Deine Beispielrechnung habe ich nachvollzogen): ich hab den Startwert von –99999999 bis +9999999 variiert, die Eingangsparameter a-g beliebig geändert... das Ergebnis ist immer sofort ohne merkbare Rechenverzögerung erschienen. Hätte mich ehrlich gesagt auch gewundert, auch wenn ich mit einem 10-Jahre alten Pentium3 gerechnet habe. Wenn es bei der „winzigen“ Beispieltabelle schon nennenswerte Rechenzeiten geben würde, was wäre dann erst bei meiner richtigen Berechnung...


Also bisher sieht die benutzerdefinierte Funktion jedenfalls sehr gut aus, vielen Dank. Ich gehe diesen Weg jetzt erst mal weiter.

Eine empfehlenswerte deutsche Hilfeseite zu den benutzerdefinierten Funktionen kennst Du vermutlich keine, sonst hättest Du ja nicht den Franzosen angeführt (ja, ich kann auch Englisch . Aber Deutsch ist mir lieber, vor allem wenn's um etwas für mich völlig neues wie VBA geht). Google liefert zu diesem Thema auch nichts gescheites.

Bis dann,
Martin


Ich bin mal so frei um für die Suche nach einem guten VBA-Buch einen neuen thread aufzumachen, um hier nicht noch mehr vom Thema abzukommen.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 11. Feb. 2008 12:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mar111 10 Unities + Antwort hilfreich

Zitat:
Was verstehst Du in diesem Fall unter alles, das Du es so betonst?
Die Voreinstellung in Excel ist die automatische Berechnung. Das ist auch gut so und entspricht dem, was die meisten User wünschen. In einer "normalen" Mappe ist das kein Problem. Meine Kiste hat etwas länger gebraucht - mag daran liegen, dass es schon spät war und zuviele andere Fenster offen und vielleicht noch der Virenwächter und was weiß ich noch alles im Hintergrund aktiv... Jedenfalls wurde er beim Interpolieren für a=1 seeeeehr langsam.

Schön, wenn Du keine Performance-Verschlechterung feststellen konntest! Dennoch habe ich Bedenken: Du erwähnst 500 Gleichungen mit (bis zu) 18 Parametern. Wenn Excel (bei mir) schon schwächelt, weil eine Gleichung iteriert wird - wie ist das dann erst bei 500?

Zitat:
Sobald ich irgendeinen Eingabewert ändere, egal ob einen der Parameter a-g, den Startwert oder die Fehlerschranke eps, muss halt die Rechnung neu durchgeführt werden,...oder???
Genau, so soll es sein. Hast Du allerdings 500 Formeln (in VBA) erstellt, die dann alle immer gleichzeitig und sofort losrennen, könnte es doch eng werden. Nachteil der Auto-Berechnung ist, dass alle Werte neu berechnet werden, nicht nur die geänderten. Wie erwähnt: Das muss nicht zu einer Verlangsamung führen, es kann aber, und diesen Punkt wollte ich nicht unerwähnt lassen.
Zitat:
Eine empfehlenswerte deutsche Hilfeseite zu den benutzerdefinierten Funktionen kennst Du vermutlich keine...
Leider nein, mir ist keine bekannt. Es ist - wie soll ich sagen - eine Nische, das Weitergeben der so erstellte Funktionen ist nicht "einfach so" lösbar. Wenn der Kollege meine Mappe aufmacht, aber die Funktionen nicht hat, weil sie in der [zwei Begriffe, die sich googeln lassen] PERSONL.xls liegen oder als AddIn installiert wurden, bekommt er im besten Fall nur ###### angezeigt. Man gewöhnt sich daran, die mühe- und liebevoll erstellten Teile einzusetzen - und vergisst, wie's ohne geht. Im "normalen" Büroalltag klappt's recht gut ohne - außer, jemand stellt erhöhte Anforderungen...

Frederik

------------------
DIN1055.de  |  Lastannahmen für Anwender

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mar111
Mitglied
Ingenieur


Sehen Sie sich das Profil von Mar111 an!   Senden Sie eine Private Message an Mar111  Schreiben Sie einen Gästebucheintrag für Mar111

Beiträge: 25
Registriert: 16.05.2007

Excel97

erstellt am: 15. Feb. 2008 13:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


TabellemitMakro_Solver.xls.txt

 
Hi Frederik,

Du hattest mal den Solver angesprochen, zur Lösung meines Iterationsproblems. Das hat mich nicht mehr losgelassen. Mein Problem ist nämlich, dass ich nicht nur Gleichungen mit einer Variablen lösen muss (also f(x)), sondern auch welche mit 2 Variablen (also f(x,y)). Und bei diesen Gleichungen ist die Iterationsvorschrift für das Newtonverfahren nicht mehr so einfach, wie bei denen mit nur einem Parameter. Mit dem Solver hingegen geht es problemlos. Einfach als Bedingung eine Funktion gleich null setzen, die zweite Funktion als Nebenbedingung ebenfalls und die beiden Startwerte x und y als veränderliche Zellen angeben und schon kommt das gewünschte Ergebnis raus. Das klappt prima und wäre optimal für mich..

Nun habe ich aber beim benutzen des Solvers wieder mein altbekanntes Problem, nämlich dass ich ihn für jede meiner (ca. 500) Tabellenzeilen separat ausführen muss. Und wenn sich in meiner Tabelle Werte ändern fange ich wieder von vorne an. Deshalb meine Frage: kann man die Ausführung des Solvers in ein Makro packen und ihn automatisch quasi mit einem Tastendruck für die gesamten 500 Zeilen ausführen lassen? Thomas Harmening hatte ja mal den Makro-Code für die Zielwertsuche (die mir hier nicht weiterhilft, da dort nur 1 Parameter veränderlich ist) angegeben und das gleiche hab ich mal für den Solver vom Makrorecorder (Makro "Solver") aufzeichnen lassen (für 2 Durchläufe, siehe auch Beispielmappe):

Code:

SolverAdd CellRef:="$J$3", Relation:=2, FormulaText:="0"
    SolverOk SetCell:="$I$3", MaxMinVal:=3, ValueOf:="0", ByChange:="$A$3:$B$3"
    SolverSolve
    SolverOk SetCell:="$I$4", MaxMinVal:=3, ValueOf:="0", ByChange:="$A$3:$B$3"
    SolverDelete CellRef:="$J$3", Relation:=2, FormulaText:="0"
    SolverOk SetCell:="$I$4", MaxMinVal:=3, ValueOf:="0", ByChange:="$A$3:$B$3"
    SolverAdd CellRef:="$J$4", Relation:=2, FormulaText:="0"
    SolverOk SetCell:="$I$4", MaxMinVal:=3, ValueOf:="0", ByChange:="$A$4:$B$4"
    SolverSolve


Beim ausführen des Makros ("Solver_mit_Schleife") bekomme ich die Fehlermeldung "Fehler beim kompilieren: Sub, Function oder Property erwartet". Kannst Du (oder auch ein anderer Leser )damit was anfangen? Ich nehme an, dass die Variablen nicht richtig definiert sind und auch sonst noch das ein oder andere fehlt. Oder liegts, wie ich insgeheim befürchte, einfach daran, dass mein Vorhaben so gar nicht geht?

Ich stelle es mir so vor, dass das Makro nach einmaligem Start alle Tabellenzeilen durchläuft und in jeder den Solver ausführt und den eingegebene Startwert x0/y0 durch Nullsetzen der Zielzellen in den korrekten Wert überführt. Deshalb habe ich im zweiten Makro ("Solver_mit_Schleife") versucht, die erforderliche Schleife drumzubasteln (sehr rudimentär ).


Ich wäre für einen Tipp was noch fehlt (oder eben die Bestätigung, das es so gar nicht geht)dankbar.

Gruß
Martin

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Thomas Harmening
Moderator
Arbeiter ツ




Sehen Sie sich das Profil von Thomas Harmening an!   Senden Sie eine Private Message an Thomas Harmening  Schreiben Sie einen Gästebucheintrag für Thomas Harmening

Beiträge: 2897
Registriert: 06.07.2001

Das Innerste geäussert
und aufs Äusserste verinnerlicht

erstellt am: 15. Feb. 2008 17:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mar111 10 Unities + Antwort hilfreich


Vba-verweis_setzen.PNG

 
Deinem Vba-Projekt fehlt der Verweis auf Solver,
so wie man das Solver-Addin erst aktivieren muss - in Excel,
so muss man auch die Bibliothek - in VBA erst bekannt machen.

siehe auch Bild, HTH

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mar111
Mitglied
Ingenieur


Sehen Sie sich das Profil von Mar111 an!   Senden Sie eine Private Message an Mar111  Schreiben Sie einen Gästebucheintrag für Mar111

Beiträge: 25
Registriert: 16.05.2007

Excel97

erstellt am: 15. Feb. 2008 18:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke für den Tipp. Leider taucht bei mir in dem Menü "verfügbare Verweise" der Punkt "Solver" nirgends auf. Die ersten 4 Punkte sind die gleichen wie in deinem Bild (bis auf den Unterschied, dass ich 11.0 statt 12.0 beim 2. und 4. Punkt stehen habe), ab dann sieht die Liste anders aus und der Solver fehlt komplett (taucht auch an anderer Stelle der Liste nirgends auf)  .

edit: ich nehme an, dass es nur darum geht, in diesem Menü einen Haken beim Solver zu setzen, d.h. auftauchen in der Liste müsste er bei mir eigentlich schon (ohne gesetzten Haken) oder liege ich da falsch?

[Diese Nachricht wurde von Mar111 am 15. Feb. 2008 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Thomas Harmening
Moderator
Arbeiter ツ




Sehen Sie sich das Profil von Thomas Harmening an!   Senden Sie eine Private Message an Thomas Harmening  Schreiben Sie einen Gästebucheintrag für Thomas Harmening

Beiträge: 2897
Registriert: 06.07.2001

Das Innerste geäussert
und aufs Äusserste verinnerlicht

erstellt am: 15. Feb. 2008 19:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mar111 10 Unities + Antwort hilfreich

hmm, da scheint die Solver32.dll zu fehlen in \Programme\Microsoft Office\Officexx\Library\SOLVER...
mal dort nachschauen ob die Datei vorhanden ist.

(habe mir zwar auch gerade erst das Addin Solver nachinstallieren lassen,
da wird er wohl gleich die Dll angelegt haben) ->eventuell eine weitere Lösung: Das Addin deaktivieren und wieder aktivieren und die Dll wird nachinstalliert ?
Siehe auch
http://support.microsoft.com/kb/136722/de,  eine Auflistung der Dateien die bei Microsoft Office 95 Standard Edition angelegt werden.
http://support.microsoft.com/kb/161461/de  -Auflistung der Dateien auf der Instalationscd XL 97
http://support.microsoft.com/kb/507733/de  XL97D: Aufgezeichnetes VBA Modul zum Solver läuft nicht

Code:
Sub Solver_mit_schleife()
    For Each cell In ActiveSheet.Range("C3:C10")'Bereich anpassen oder erste Zelle und letzte Zelle ermitteln;-)
    SolverReset
    'aa = cell.Address
    'rRow = cell.Row
    'MsgBox cell.Row
    'cColumn = cell.Column
    SolverAdd CellRef:="J" & cell.Row, Relation:=2, FormulaText:="0"
    SolverOk SetCell:="I" & cell.Row, MaxMinVal:=3, ValueOf:="0", ByChange:="A" & cell.Row & ":B" & cell.Row
    SolverSolve True
    Next
End Sub

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mar111
Mitglied
Ingenieur


Sehen Sie sich das Profil von Mar111 an!   Senden Sie eine Private Message an Mar111  Schreiben Sie einen Gästebucheintrag für Mar111

Beiträge: 25
Registriert: 16.05.2007

Excel97

erstellt am: 16. Feb. 2008 15:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Super Thomas, Dein dritter link hat geholfen. Ich musste die Datei solver.xla als Verweis hinzufügen, dann erscheint der Solver in der Verweisliste.

Und Dein Code funktioniert ebenfalls wunderbar. Danke.


Schönes Wochenende,
Martin

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz