VBA Tipp: Modalwert ermitteln

Aus DBWiki
Wechseln zu: Navigation, Suche

Aufgabenstellung

Ich möchte den Modalwert - also den am häufigsten auftretenden Wert - einer Tabellen-/Abfragespalte ermitteln.

Lösung

Die folgende Funktion liefert den Modalwert analog zu den Domänenaggregatfunktionen wie z.B. DAvg (für den Mittelwert):

Public Function Modalwert(FldName As String, Domain As String, _
  Optional Krit As String = "")
 
Dim DB As Database, RS As DAO.Recordset, SQL As String
 
  Set DB = CurrentDb
  SQL = "SELECT TOP 1 [" & FldName & "], Count([" & FldName & "]) " & _
    " FROM [" & Domain & "] GROUP BY [" & FldName & "]"
  If Krit <> "" Then
    SQL = SQL & " WHERE " & Krit
  End If
  SQL = SQL & " ORDER BY Count([" & FldName & "]) DESC"
  Set RS = DB.OpenRecordset(SQL, dbOpenSnapshot)
  If Not RS.EOF Then
    Modalwert = RS(FldName)
  End If
  RS.Close
  DB.Close
End Function

Aufruf

Zur Ermittlung des häufigsten positiven Wertes im Feld "MeinFeld":

ModalWert("MeinFeld", "MeineTabelle", "MeinFeld > 0")


Wiki hinweis.png Anmerkung: Einen Modalwert zu ermitteln gibt nur Sinn bei diskreten Werten, d. h., ganzzahligen Feldern oder Textfeldern. Bei Datumsfeldern mit Zeitangaben oder Gleitkommazahlen ist die Funktion einigermaßen nutzlos.