Neuigkeiten:

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

Mobiles Hauptmenü

Excel-Funktionen "Standnorminv" und "Standnormvert" in Access SQL-Abfrage

Begonnen von eliewsam, Januar 29, 2011, 17:32:06

⏪ vorheriges - nächstes ⏩

eliewsam

Hallo Access-Spezialisten,

ich benötige die beiden Excel-Funktionen "STANDNORMVERT" und "STANDNORMINV" in einer Access SQL-Abfrage. Hat einer von Euch vielleicht eine Idee, wie dies funktionieren könnte.

Bereits jetzt schon vielen Dank für Eure Antworten. Gruß Elie

DF6GL

Hallo,

mögliche Lösung:

1) Einen Verweis auf Excel.exe  im VBA-Editor erzeugen
2) eine Public-Funktion in einem Standardmodul erstellen und darin der VBA-Funktion das Ergebnis der Excel-Funktion zuweisen:


Beispielhaft:

Sub ftkUseFunktion (A,B,C)
ftkUseFunktion = Excel.Application.ExcelFunktion(A,B,C)
End Sub


Diese VBA-Funktion wiederum kannst Du in einer Abfrage aufrufen.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

eliewsam

... Leider erhalte ich bei Verwendung dieses Codes:

Public Function Standnormvert(z As Double)
Standnormvert = Excel.Application.ExcelFunktion(z)
End Function

Und Verwendung von z.B. "(STANDNORMVERT(1.33333)) as Test" im Rahmen einer SQL-Abfrage stets einen Laufzeitfehler 438 "Objekt unterstützt die Eigenschaft oder Methode nicht".

Könnte mir vielleicht nochmals jemand weiterhelfen. Vielen herzlichen Dank! Gruß Elie

eliewsam

... könnte es evtl. mit diesem Code klappen? Bei mir bislang ebenfalls ohne Erfolg!

Public Function Standnormvert(z As Double)
    Dim xl As Object
    Set xl = CreateObject("Excel.Application")
    Standnormvert = xl.WorksheetFunction.Standnormvert(z)
    Set xl = Nothing
End Function

Gruß Elie

database

Hallo,

Antwort: NEIN  :-\

du kannst nicht den Funktionsnamen (Formelnamen) aus dem Excel-Funktionspool benutzen sondern musst da VBA-Äquivalent dazu nehmen. ;)

wenn du den Objektexplorer im VBE öffnest findest du unter den Excel-Biblkiotheken auch die von dir bereits angerissene Bibliothek der WorkSheetFunctions
Hier musst du dir dann die heraussuchen, die für deine Lösung zutreffend ist.

Nach einer kurzen Googelei... 8)

Ergebnis = Excel.Application.WorksheetFunction.NormSDist(z)

also in deinem Fall dann in Etwa so....


Public Function Standnormvert(z As Double)as Double
   Dim xl As Object
   Set xl = CreateObject("Excel.Application")
   Standnormvert = xl.WorksheetFunction.NormSDist(z)
   Set xl = Nothing
End Function


für den Aufruf in einer Abfrage sollte auch das genügen:

(Verweis auf die Ms Excel xxx Library vorausgesetzt)

Public Function Standnormvert(z As Double)
    Standnormvert = Excel.Application.WorksheetFunction.NormSDist(z)
End Function


Quelle:
http://rz-home.de/~drhubrich/pdf/VBAED.pdf

p.s. du findest deine Funktionen auf Seite III rechts!

HTH

eliewsam

Hallo,

hat alles super geklappt. Kann jetzt mit Hilfe der Excel-Funktionen sämtliche Werte berechnen. Auf dem Bildschirm wird auch das Ergebnis angezeigt. Wenn ich allerdings das ganze sortieren möchte, rechnet sich das Programm zu Tode;-))

Nochmals vielen herzlichen Dank für Eure Hilfe. Gruß Elie

database

Hallo,

erstmal freut es mich, dass es geklappt hat, dann ...

ZitatWenn ich allerdings das ganze sortieren möchte, rechnet sich das Programm zu Tode

solltest du nicht die Ergebnisse sortieren sondern die Ausgangswerte.
Wenn die aufsteigend oder absteigend vorsortiert werden, rechnet das Programm bestimmt  ;)nicht länger als bei unsortierter Liste.

Wenn deine Frage somit beantwortet ist und das Thema keine weitere Bearbeitung verlangt bitte das Thema in deinem ERSTEN Beitrag auf 'gelöst' setzen - DANKE