Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

How calculate median

Posted on 2016-11-22
5
Medium Priority
?
61 Views
Last Modified: 2016-11-22
I have a report that shows the record ID and a number field in the detail section.  I can get the average with the sum of the number field divided by the record count in the report footer.

But how can I calculate the median average?
0
Comment
Question by:SteveL13
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
5 Comments
 
LVL 22

Accepted Solution

by:
crystal (strive4peace) - Microsoft MVP, Access earned 2000 total points
ID: 41897756
This code averages the 2 middle values if there is not an odd number of values -- you may want to change this. Send it the SQL statement you want it to use where the first field is what you want the median of.
Function GetMedian(sSQL As String) As Double
' 121103 Crystal
' strive4peace

   On Error GoTo Proc_Err
 

   Dim db As DAO.Database _
      , rs As DAO.Recordset
      
   Dim nDbl As Double _
      , nNumValues As Long
   
   Set db = CurrentDb
   Set rs = db.OpenRecordset(sSQL, dbOpenSnapshot)
   
   If Not rs.EOF Then
      With rs
         .MoveLast
         .MoveFirst
         nNumValues = .RecordCount
         Select Case True
         
         Case nNumValues = 1
            GetMedian = Nz(.Fields(0).Value, 0)
            
         Case (nNumValues / 2 - nNumValues \ 2) < 0.001 'even
            'average 2 middle values
            .Move ((nNumValues \ 2) - 1)
            nDbl = Nz(.Fields(0).Value, 0)
            .MoveNext
            GetMedian = (nDbl + Nz(.Fields(0).Value, 0)) / 2
            
         Case Else 'odd
            .Move (nNumValues \ 2)
            GetMedian = Nz(.Fields(0).Value, 0)
         
         End Select
      End With 'rs
   End If
   
Proc_Exit:
   On Error Resume Next
   'release object variables
   If Not rs Is Nothing Then
      rs.Close
      Set rs = Nothing
   End If
   Set db = Nothing
   Exit Function
  
Proc_Err:
   MsgBox Err.Description, , _
        "ERROR " & Err.Number _
        & "   GetMedian"

   Resume Proc_Exit
   Resume
      
End Function

Open in new window

0
 

Author Comment

by:SteveL13
ID: 41897774
Must be doing something wrong or not complete.  I copy/pasted your code in the bottom of the reports VBA editor.  Now how do I make the textbox populate with the median on the report?
0
 
LVL 22
ID: 41897783
=GetMedian("SELECT MyField FROM MyTable WHERE MyConditions")

Open in new window


substitute :
MyField with the fieldname
MyTable with the table or query name
MyConditions with the criteria
0
 

Author Closing Comment

by:SteveL13
ID: 41898183
Thank you again.  Much appreciated.
0
 
LVL 22
ID: 41898421
you're welcome ~ happy to help
0

Featured Post

How to Use the Help Bell

Need to boost the visibility of your question for solutions? Use the Experts Exchange Help Bell to confirm priority levels and contact subject-matter experts for question attention.  Check out this how-to article for more information.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Access custom database properties are useful for storing miscellaneous bits of information in a format that persists through database closing and reopening.  This article shows how to create and use them.
Code that checks the QuickBooks schema table for non-updateable fields and then disables those controls on a form so users don't try to update them.
With Microsoft Access, learn how to specify relationships between tables and set various options on the relationship. Add the tables: Create the relationship: Decide if you’re going to set referential integrity: Decide if you want cascade upda…
Have you created a query with information for a calendar? ... and then, abra-cadabra, the calendar is done?! I am going to show you how to make that happen. Visualize your data!  ... really see it To use the code to create a calendar from a q…

618 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question