Oktober 22, 2021, 21:48:25

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Excel Funktion =EXP in der Access-Abfrage anwenden

Begonnen von tipmatic1035, Oktober 05, 2021, 15:13:07

⏪ vorheriges - nächstes ⏩

tipmatic1035

Ich möchte im Forum fragen, wie ich eine EXCEL Funktion (=EXP) in einer ACCES-Abfrage (Version 2007!) nutzen kann?
Die genaue EXCEL Formel ist =EXP(SUMME(a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;r;q;s))/EXP(1+(SUMME(a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;r;q;s)),

• ,,a" ist hier eine Konstante -4,789594.
• ,,b" sind Alterspunkte, die nach der folgenden Formel: Alterspunkte: =WENN([Alter]<59;1;([Alter]-58)) berechnet werden. Das funktioniert problemlos, sowohl im EXCEL als auch im ACCESS.
• die übrigen Werte (von ,,c" bis ,,s") werden wiedergeben durch Multiplizieren der Variablenwerte (aus einer anderen Tabelle der vorliegenden Datenbank stammend) entweder 0 (für NEIN) oder -1 (für JA) mit einem zu jeder Variablen zugehörigen Koeffizienten. Das klappt sowohl im EXCEL als auch im ACCESS. Die negativen Werte (bei ACCESS ,,ja" = -1) werden bei der Berechnung der ,,Summe" berücksichtigt.

Ich berechne in einem Feld meiner Access-Abfrage zunächst diese ,,Summe" (von ,,a" bis ,,s") und verwende diese in einem anderen Feld als Exponenten bei der Basis von e=2,718282. Entsprechend der Formel: eSumme/1+eSumme.

Leider unterscheidet sich das Endergebnis im ACCESS von dem im EXCEL.
Ist die Formel falsch? Oder muss e=2,718282 anders sein?

Ich besitze Grundkenntnisse, ich denke ,,ausreichende", im Umgang mit ACCESS 2007. Leider sind meine Kenntnisse mit VBA und SQL null. Falls ich Ratschläge auf diesem Wege erhalten sollte, bitte um Hinweise, wo und wie ich mich in diesem Forum mit der Materie (VBA; SQL) auseinandersetzen kann.
Vielen Dank!
Michael

DF6GL

Oktober 05, 2021, 15:57:22 #1 Letzte Bearbeitung: Oktober 05, 2021, 16:02:56 von DF6GL
Hallo,


e = e , und hat mit Excel oder Access nichts zu tun


Wie genau unterscheidet sich das Ergebnis denn?

Ich vermute, es werden in Access falsche (ungenaue,  z.B. Single statt Double ) Datentypen verwendet, die bei den Summierungen gröbere Rundungsfehler verursachen.





markus888

Grundsätzlich kann man Excel Funktionen in Access nutzen.
Aber in diesem Fall bietet auch VBA direkt eine Exp Funktion und da sehe ich keinen Unterschied zu Excel.
10 Jahre Access

tipmatic1035

Unterschiede sind groß, so dass die Ergebnisse im Excel und Access ziemlich widersprüchlich sind.

Zur Berechnung wird das Alter einbezogen, das durch die Formel:

Alter OP: DatDiff("jjjj";[GebDat];[OP_wann])+(Format([OP_wann];"mmtt")<Format([GebDat];"mmtt"))

auf der Basis der Angaben vom Datum der OP und des Geburtsdatums zuerst berechnet wird.
Und die übrigen Werte (,,c" bis ,,s") in meiner Zielformel werden durch das Multiplizieren eines ,,konstanten" Koeffizienten erreicht, entweder mit 0 oder -1, weil die Informationen aus dem Felddatentyp Ja/Nein kommen.

Es werden ursprünglich keine Felddatentypen als Zahl verwendet, so dass ich keine Möglichkeit habe, von single auf double zu ändern.

Ich weiß, wie das VBA Fenster geöffnet wird, aber das warst schon mit dem VBA...

markus888

Zitat von: tipmatic1035 am Oktober 05, 2021, 22:44:48Ich weiß, wie das VBA Fenster geöffnet wird, aber das warst schon mit dem VBA...


Du brauchst vorerst kein VBA um eine eingebaute VBA Funktion einzusetzen.
In SQL kannst du normalerweise jede Funktion nutzen.

Hast du überprüft ob die Summen in Excel und Access - vor Nutzung der Exp Funktion gleich sind?

Das wäre der erste Schritt zur Prüfung.
10 Jahre Access

DF6GL

Hallo,


ZitatEs werden ursprünglich keine Felddatentypen als Zahl verwendet, so dass ich keine Möglichkeit habe, von single auf double zu ändern.


??   Wovon sprichst Du?  Excel kennt keine Datentypen wie die von Access. In Access kannst Du jederzeit die Datentypen von Tabellenfeldern bestimmen.

Wenn Du Dich in Access bewegst, MUSST Du Dich um die passenden Datentypen kümmern, wenn numerische (mathematische) Berechnungen durchgeführt werden (und nicht nur dabei, auch grundsätzlich..)

tipmatic1035

Zuerst vielen Dank für die Antworten.

In der Tat habe ich beim Summieren an einer Stelle ein ,,-" anstatt eines ,,+" gesetzt. Ich habe es jetzt erkannt und korrigiert, so dass die Endergebnisse übereinstimmen.

Die Ergebnisse im Access haben mehrere Nachkommastellen. Wie kann ich diese auf zwei Stellen nach Komma reduzieren.
Gibt es ein Möglichkeit, es ohne SQL-Kenntnisse zu lösen?

Vielen Dank!

tipmatic1035

Ich habe die Lösung eben gefunden.

Runden([Endergebnis];2)

Danke!

tipmatic1035

Vielen Dank an alle!

Das Problem ist gelöst.


P.S.

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Wo finde ich es?


markus888

Zitat von: tipmatic1035 am Oktober 06, 2021, 19:53:55Die Ergebnisse im Access haben mehrere Nachkommastellen.

Das Ergebnis müsste in Access übrigens genauer als in Excel sein, da Excel den Rückgabewert von Exp laut Dokumentation in einen String konvertiert - dabei muss natürlich gerundet werden.
Gleitkommazahl -> String -> Gleitkommazahl da gehen natürlich Informationen verloren.

In Access hingegen kann mit den Werten direkt weitergerechnet werden.
10 Jahre Access