Office: (Office 2003) Berechnung von Median in Access

Helfe beim Thema Berechnung von Median in Access in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, muss eine Median Berechnung in Access vornehmen. Leider habe ich keine Erfahrung im VBA. Ich würde gerne die Berechnung in einer... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von esma, 30. November 2009.

  1. Berechnung von Median in Access


    Hallo zusammen,

    muss eine Median Berechnung in Access vornehmen. Leider habe ich keine Erfahrung im VBA. Ich würde gerne die Berechnung in einer Abfrage vornehmen. Könnte jemand mir weiterhelfen?

    Die Medianberechnung würde sich auf eine gewichtete Kennzahlberechnung aus einer Abfrage beziehen.

    Abfrage: qry_kennzahl

    Feld: Spanne

    gruss

    esma

    :)
     
  2. leider habe ich überhaupt keine ahnung, wie ich diesen code verwenden soll ;-(
     
  3. Berechnung von Median in Access

    Atrus2711, 2. Dezember 2009
    #4
  4. wäre dieser code so richtig?

    Public Function MedianOfRst(qry_Kennzahl As String, Spanne As String) As Double
    Dim MedianTemp As Double
    Dim RstOrig As Recordset
    Set RstOrig = CurrentDb.OpenRecordset(qry_Kennzahl , dbOpenDynaset)
    RstOrig.Sort = Spanne
    Dim RstSorted As Recordset
    Set RstSorted = RstOrig.OpenRecordset()
    If RstSorted.RecordCount Mod 2 = 0 Then
    RstSorted.AbsolutePosition = (RstSorted.RecordCount / 2) - 1
    MedianTemp = RstSorted.Fields(Spanne).Value
    RstSorted.MoveNext
    MedianTemp = MedianTemp + RstSorted.Fields(Spanne).Value
    MedianTemp = MedianTemp / 2
    Else
    RstSorted.AbsolutePosition = (RstSorted.RecordCount - 1) / 2
    MedianTemp = RstSorted.Fields(Spanne).Value
    End If
    MedianOfRst = MedianTemp
    End Function
     
  5. Das war unnötig. Du brauchtest den Code nur kopieren und mit dem geposteten Aufruf zu nutzen. Von Funktion neuschreiben war keine Rede, zumal das nicht so einfach ist, wie du das da ansetzt (qryKennzahl ist da ein Argument, aber du meinst es es als festen Abfragename; dafür müsste er in Anführungszeichen, die aber dann wiederum den Charakter als Argument vernichten).
     
    Atrus2711, 2. Dezember 2009
    #6
  6. dieser code muss doch auch umgeschrieben werden?

    Public Function Median(ByVal FldName As String, ByVal TblOrQryName As String, _
    Optional ByVal Krit as String) As Double
    Dim DB As DAO.Database, RS As DAO.Recordset
    Dim RCount As Long, x As Long, Offset As Long
    Set DB = CurrentDb()
    If Krit "" Then Krit = Krit & " AND "
    Set RS = DB.OpenRecordset("SELECT [" & FldName & _
    "] FROM [" & TblOrQryName & "] WHERE " & strKrit & [" & FldName & _
    "] IS NOT NULL ORDER BY [" & FldName & "]", dbOpenSnapshot)
    ' Um Nullwerte bei der Berechnung mit zu berücksichtigen,
    ' den Ausdruck
    ' WHERE [" & fldName & "] IS NOT NULL
    ' entfernen!
    ' Die Berechnung gibt nur für numerische Felder Sinn!
    With RS
    If .RecordCount = 0 Then GoTo Ex
    .MoveLast
    RCount = .RecordCount
    .MoveFirst
    Offset = (RCount \ 2)
    .Move Offset
    x = CDbl(RS(FldName))
    If RCount Mod 2 = 0 Then
    .MovePrevious
    Median = (x + CDbl(RS(FldName))) / 2
    Else
    Median = x
    End If
    Ex:
    On Error Resume Next
    .Close
    End With
    DB.Close
    End Function
     
  7. Berechnung von Median in Access

    Nein. Das ist ja der Sinn an Funktionen, dass sie alles, was für den Zweck nötig ist, als Argumente übergeben bekommen. Am Beispiel: das rote ist die Übergabestelle für den Feldnamen, der wird da beim Aufruf übergeben und gilt in der Funktion, als wäre er da explizit reingeschrieben. Grün und blau gelten analog als Platzhalter (Variablen) für Tabellename und Kriterium; ihr Name steht stellvertretend für den Inhalt.

    Code:
    Diese Argumente werden im Code dann natürlich an relevanter Stelle eingesetzt. Das macht aber VBA automatisch: der Name steht für den Inhalt. Das ist das Prinzip von Variablen.

    Du hast ja (bildlich gesprochen) auch nur eine "allgemeine" Zange im Werkzeugkasten, und die funktioniert am Wasserhahn genauso gut wie am Auto, denn sie macht immer dasselbe: sie kneift ihre Backen zusammen. Ob sie das mit dem Auto macht oder sonstwo, ist egal. So ist das bei Funktionen auch: gleiches Schema auf unterschiedliche Sachverhalte anwenden. Das nennt sich dann Programmieren.

    Anderer Vergleich: Excel. Da gibt es auch nur eine Funktion namens Summe, obwohl die in Spalte A genau läuft wie in Spalte B....
     
    Atrus2711, 2. Dezember 2009
    #8
  8. habe folgende modul code und folgende aufruf

    test: Median([Spanne];[qry_Kennzahl])

    der möchte von mir ein parameter,was ist wohl falsch?

    Function median(qryKennzahl As String, Spanne As String)
    Dim RS1 As Recordset, RS2 As Recordset
    Dim cnt As Long, mCnt As Integer, i As Integer
    Dim tmpVal As Double

    Set RS1 = CurrentDb.OpenRecordset("SELECT count(1) from " & qry_Kennzahl, DB_OPEN_SNAPSHOT)
    If RS1(0) > 0 Then
    'Mitte bestimmen
    cnt = RS1(0) \ 2 + 1
    mCnt = 2 - (RS1(0) Mod 2)
    Set RS2 = CurrentDb.OpenRecordset("SELECT top " & cnt & " " & Spanne & " from " & qry_Kennzahl & " order by " & Spanne, DB_OPEN_SNAPSHOT)
    RS2.MoveLast
    For i = 1 To mCnt
    tmpVal = tmpVal + RS2(0)
    RS2.MovePrevious
    Next i
    median = tmpVal / mCnt
    RS2.Close
    Else
    median = Null
    End If
    RS1.Close

    End Function
     
  9. also muss ich nur das grüne ändern?
     
  10. Da die Funktion Strings erwartet, solltest du sie auch übergeben, verwende außerdem die ursprüngliche Funktion:

    Code:
     
    Arne Dieckmann, 2. Dezember 2009
    #11
  11. dieser code funktioniert nicht also es gibt eine fehlermeldung

    Set RS = DB.OpenRecordset("SELECT [" & FldName & _
    "] FROM [" & TblOrQryName & "] WHERE " & strKrit & [" & FldName & _
    "] IS NOT NULL ORDER BY [" & FldName & "]", dbOpenSnapshot)
     
  12. Berechnung von Median in Access

    Hi,

    steht alles in #4....

    Zur "Denke" von Funktionen vielleicht mal ein einfacheres Beispiel. Du weißt vielleicht noch aus dem Matheunterricht, dass man den Kreisumfang aus 2*Pi*Radius berechnen kann. Diese "Formel" gilt für alle Kreise, da die einzige Information, von der der Umfang abhängt (der Radius) in die Formel eingesetzt wird. Egal welchen Wert der Radius hat, der Platzhalter für den Radius steht für den Wert, so dass die Formel "allgemeingültig" ist:

    Code:
    Diese Formel (Funktion) klappt sowohl für Radiuswerte von 0,01 wie für 55503,2834, denn der konkrete Radiuswert spielt keine Rolle: das Prinzip ist immer gleich. Es ist also Unsinn, diese Formel für die unendlich vielen denkbaren Radiuswerte immer wieder neu zu schreiben. Das hattest du aber mit deinem Ansatz vor.... eine Funktion für diese Tabelle, eine für jene, eine für dieses Feld, eine für jenes, ...

    Exkurs Ende. *Smilie

    In deiner Mediangeschichte gibt es zwar keinen Radius, aber dafür spielen Tabelle, Feldname und evtl. Kriterien eine Rolle. Diese Argumente (auch Parameter genannt) sind alles, was die Funktion braucht, um das Ergebnis zu liefern, denn die "Technik" zur Ermittlung ist immer die gleiche.
     
    Atrus2711, 2. Dezember 2009
    #13
  13. würde gerne den median einer kennzahl aus einer abfrage ermitteln

    im excel kann ich diese berechnung vornehmen,aber ich habe keine ahnung bezgl. vba
     
  14. Hi,

    wahrhaftig, dbwiki enthielt einen Fehler. Hier die korrigierte Version. Getestet und gelaufen *Smilie

    Code:
    Edit: Demo anbei (Abfrage1)
     
    Atrus2711, 2. Dezember 2009
    #15
Thema:

Berechnung von Median in Access

Die Seite wird geladen...
  1. Berechnung von Median in Access - Similar Threads - Berechnung Median Access

  2. Berechnung pro angefangener 1000

    in Microsoft Excel Hilfe
    Berechnung pro angefangener 1000: Hallo zusammen, ich habe einen Punktekatalog welcher sich aus bestimmten Werten ansammelt. Pro 1000 Punkte werden 40€ Kosten fällig. Wie ich es berechne, wenn ich 1045 Punkte habe, ist mir...
  3. Berechnungen ?

    in Microsoft Excel Hilfe
    Berechnungen ?: Hallo und einen schönen guten Tag, ich habe ein Problem beim Felder berechnen. Vielleicht kann ich Euch mal die Datei anhängen, denn wenn ich das versuche zu erklären, kommt nichts dabei heraus....
  4. OEE Berechnung auf Stunde

    in Microsoft Excel Hilfe
    OEE Berechnung auf Stunde: Hallo Zusammen, in meiner Beispieldatei werden zu Teilenummern Stückzahlen vorgegeben.Man kann in einer Stunde bis zu 5 verschiedene Teiletypen eingeben. Der Tag ist in 3 Schichten unterteilt. Es...
  5. Power BI / Servicegrad in Prozent berechnen

    in Sonstiges
    Power BI / Servicegrad in Prozent berechnen: Hallo Liebes Forum, Ich würde gerne eine dritte Spalte für den Servicegrad in Prozent (an gelb markierte Stelle) erstellen. [ATTACH] Bei Excel bin ich folgendermaßen vorgegangen....
  6. Zeit Berechnung mit mehreren kriterien (Datum/Uhrzeit)

    in Microsoft Excel Hilfe
    Zeit Berechnung mit mehreren kriterien (Datum/Uhrzeit): Hallo zusammen, leider weiss ich nicht wie ich die Start- und Endzeit von "Datum und Uhrzeit" mit mehreren kriterienin über Summewenns einbauen kann. Hab hier im Forum nach einer Lösung geschaut...
  7. Berechnen des Medians einer Gruppe von Zahlen

    in Microsoft Excel Tutorials
    Berechnen des Medians einer Gruppe von Zahlen: Berechnen des Medians einer Gruppe von Zahlen Excel für Microsoft 365 Excel für Microsoft 365 für Mac Excel für das Web Excel 2019 Excel 2016 Excel...
  8. Median berechnen nach Prinzip der SummeWenn Funktion???

    in Microsoft Excel Hilfe
    Median berechnen nach Prinzip der SummeWenn Funktion???: Hallo zusammen, ich bin ein bisschen verzeifelt. Alleine komme ich mit meinem Problem nicht weiter, deshalb hoffe ich, dass mir hier jemand weiter helfen kann... Es geht um die Berechung...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden