2017-06-08 2 views
0

Access hat eine native Median Funktion, so dass ich mit dieser UDF:Wie erhält man den Median eines in Excel importierten Access-Datensatzes?

Function fMedian(SQLOrTable, GroupFieldName, GroupFieldValue, MedianFieldName) 
    Dim rs As DAO.Recordset 

    Set db = CurrentDb 
    Set rs1 = db.OpenRecordset(SQLOrTable, dbOpenDynaset) 

    If Not (GroupFieldName = "" And GroupFieldValue = "") Then 
     If IsDate(GroupFieldValue) Then 
      GroupFieldValue = "#" & GroupFieldValue & "#" 
     ElseIf Not IsNumeric(GroupFieldValue) Then 
      GroupFieldValue = "'" & Replace(GroupFieldValue, "'", "''") & "'" 
     End If 

     rs1.Filter = GroupFieldName & "=" & GroupFieldValue 
    End If 

    rs1.Sort = MedianFieldName 

    Set rs = rs1.OpenRecordset() 
    rs.Move (rs.RecordCount/2) 

    If rs.RecordCount Mod 2 = 0 Then 
     varMedian1 = rs.Fields(MedianFieldName) 
     rs.MoveNext 
     fMedian = (varMedian1 + rs.Fields(MedianFieldName))/2 
    Else 
     fMedian = rs.Fields(MedianFieldName) 
    End If 

End Function 

Und dann mit der Funktion, wie im folgenden Beispiel Abfrage medianQuery:

select fMedian("someTable","aGroupField",[aGroupField],"medianField") from someTable 

Das Problem ist, dass ich versuche, die Ergebnisse der medianQuery in eine Excel-Bericht zu importieren, als (VBA in einer Excel-Arbeitsmappe) folgt:

Sub importData(db As DAO.Database) 

Dim rs As DAO.Recordset 

Set rs = db.OpenRecordset(recordsetName, Options:=dbReadOnly) 

End Sub 

Diese produ ces der Fehler:

Run-time error '3085': 

Undefined function 'fmedian' in expression. 

Ich bin mir bewusst, dass das Problem hier ist, dass Excel nicht Access-Abfragen, die benutzerdefinierten Funktionen verwenden lesen. Wie kann ich diese Access-Daten in Excel ziehen und trotzdem einen Median haben?

Antwort

0

Wenn Sie Ihre Access-Abfrage ändern, um eine neue Tabelle zu erstellen, werden alle gewünschten Daten in dieser Tabelle gespeichert, Sie können dann Excel an diese Tabelle anhängen. Da Excel nur vorberechnete Zahlen durchläuft, haben Sie kein Problem.

Verwandte Themen