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

Funktion liefert zwei Ergebnisse

Funktion liefert zwei Ergebnisse
10.07.2014 10:41:39
Frank

Hallo an Alle,
ich habe drei Funktionen in VBA erstellt. Funktion 1 und Funktion 2 werden dann in Funktion 3 (mc) aufgerufen.
Wenn ich nun in der
Funktion mc z und f einzeln ausrechne, dann ergibt sich das richtige Ergebnis. Wenn ich nun _
aber alles in eine Zeile schreibe, dann ergibt sich ein falsches Ergebnis. Wie kann denn das sein?
Hier mein kurzer Code.


Function mc(eco As Double, ecu As Double, ec As Double, ecgrenz As Double, n As Double, b As  _
Double, h As Double, fk As Double, fd As Double, SDB As String) As Double
Dim f As Double
Dim z As Double
z = (zP(eco, ecu, ec, n, h) - h / 2)
f = fc(eco, ecu, ec, ecgrenz, n, b, h, fk, fd, SDB)
'richtiges Ergebnis
mc = z * f
'falsches Ergebnis  (alles in einer Zeile)
mc = (zP(eco, ecu, ec, n, h) - h / 2) * fc(eco, ecu, ec, ecgrenz, n, b, h, fk, fd, SDB)
End Function

Ich hoffe es kann mir jemand dazu etwas sagen oder übersehe ich etwas?
Vielen Dank und viele Grüße
Frank

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
bei mir nicht,
10.07.2014 11:08:46
EtoPHG
Frank,
Wir sehen ja zp un fc nicht, aber ich bekomme mit Random-Werten immer 2 gleiche Ergebnisse!
Zeig eine Beispielmappe. Trenne die mc in 2 Funktione (eimal so, einmal anders) und zeig die Abweichung zwischen den beiden!
Gruess Hansueli

AW: bei mir nicht,
10.07.2014 11:47:43
Frank
Hallo Hansueli,
ich habe dir eine Datei angehangen. Es geht um das Ergebnis in Zelle A12 bzw. A13. Ich bin noch nicht dahinter gestiegen warum es unterschiedliche Ergebnisse liefetr. Ich hoffe du kannst mir helfen.
https://www.herber.de/bbs/user/91454.xlsm
Vielen Dank und viele Grüße
Frank

Anzeige
Reihenfolge der Berechnung ist umgekehrt
10.07.2014 12:14:05
EtoPHG
Hallo Frank,
Ich kann deine Berechnungsschritte mangels Zeit und der Komplexität nicht auseinander-dividieren.
Tatsache ist:
Bei mc_1 wird:
zp-Function (3,363E-02) und dann
fp-Function (-664,007...) berechnet.
umgekehrt bei mc_2 wird:
fp-Function (-664,007...) und dann
zp-Function (0,225809....) berechnet.
das muss also der veränderten Reihenfolge liegen.
Vertauschst du die beiden Faktoren in mc_2 kriegst du für beide Funktionen das gleiche Resultat.
Gruess Hansueli

AW: Reihenfolge der Berechnung ist umgekehrt
10.07.2014 13:26:17
Frank
Hallo Hansueli,
vielen Dank für deine umgehende Analyse. Also das entzieht sich nun wirklich meiner Kenntnis. Ich meine is ja im Prinzip egal ob ich z*F oder F*z rechne, wie kann denn sowas sein?
Ich schau mal ob ich etwas mehr Zeit finde das genau zu analysieren. Wie würdest du da vorgehen bzw. hättest du ein paar Vorschläge?
Vielen Dank und viele Grüße
Frank

Anzeige
AW: Reihenfolge der Berechnung ist umgekehrt
10.07.2014 15:14:20
EtoPHG
Hallo Frank,
Zitat:Ich meine is ja im Prinzip egal ob ich z*F oder F*z rechne, wie kann denn sowas sein?
Für eine einfach arithmetische Multiplikation schon, aber deine Code errechnet diese Faktoren über x-verschachtelte Funktionen (darum meine Anmerkung bzgl. Zeit und Komplexität) und liefert offensichtlich unterschiedliche Resultat, je nach dem welche Resultate zuerst errechnet werden. Wenn du die Resultate auf einem anderen Weg, als durch deinen Code, verifizieren kannst, dann würde ich tatsächlich Rudi's Vorschlag folgen und einfach die Version des Codes nehmen, der eben die richtigen Resultate liefert. Oder du kannst dir die Mühe machen Schritt für Schritt, deinen Code zu Debuggen (jeweils am Anfang der Funktionen einen Breakpoint setzen, in die Zelle mit der Funktion F2 und Enter und anschliessend mit F8 den Code verfolgen) um festzustellen, wieso das so ist.
Gruess Hansueli

Anzeige
wenn du doch ...
10.07.2014 13:43:05
Rudi Maintaire
Hallo,
einen Weg kennst, das richtige Ergebnis zu erzielen, warum nutzt du ihn dann nicht?
Der Code wird dadurch weder wesentlich kürzer noch schneller.
Gruß
Rudi

AW: wenn du doch ...
10.07.2014 14:27:14
Frank
Hallo Rudi,
danke für deine Antwort. Rudi, ich saß gestern Abend da und hatte erst den Code erst so geschrieben, dass ich z in einer Zeile ermittle und dann f in einer zweiten... und dann eben z*f rechne. Um den Code also abzukürzen, ahbe ich dann alles in eine Zeile gepackt und plötzlich kam nicht mehr das ursprüngliche Ergebnis heraus. Klar kann ich mich jetzt einfach damit zufrieden geben das es eine Lösung gibt, aber mir ist es doch gänzlich unverständlich wieso durch drehen der Multiplikation auf einmal ein richtiges bzw. falsches Ergebnis bei MC2 herauskommt. Und deshalb habe ich mich hier ans Forum gewandt in der Hoffnung eine hilfreiche Antwort zu erhalten.
Vielen Dank und viele Grüße
Frank

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige