AVG() or SUM() in different fields with nulls

Posted on 2000-05-15
Last Modified: 2012-06-21
I have used Avg() to calculate the average of valus in a single field that may contain null values. Now I want to calculate the average of 5 values that are in different fields. It is possible that some of these values can be null and I will not want to include these in the average. In this case when I try to add the 5 values when one of them is null I come up with a null value. Can anyone help me wiht this? Thanks in advance.

Question by:susantrider
  • 2

Expert Comment

ID: 2811590
u can use IsNull(FIELD) to include it or not in the AVG(), something like:

For each field in fields
   if not IsNull(field)
      SUM = SUM + field
      intNbrValues = intNbrValues + 1
   end if

  AVG = SUM/intNbrValues
LVL 10

Accepted Solution

paasky earned 100 total points
ID: 2811628
Hello Susan

I think you need own function to do the calculation. Then use it with your query. The function could look like this (add this into your global Module):

Public Function MyAVG(field1, field2, field3, field4, field5) As Variant
Dim AvgCount As Byte
    ' assume all fields contain value
    AvgCount = 5
    ' minus 1 if field1..5 is null
    AvgCount = AvgCount + IsNull(field1)
    AvgCount = AvgCount + IsNull(field2)
    AvgCount = AvgCount + IsNull(field3)
    AvgCount = AvgCount + IsNull(field4)
    AvgCount = AvgCount + IsNull(field5)
    If AvgCount > 0 Then
        MyAVG = (Nz(field1, 0) + Nz(field2, 0) + Nz(field3, 0) + Nz(field4, 0) + Nz(field5, 0)) / AvgCount
    End If
End Function

Test results using Debug Window:
? MyAVG(null,null,null,2,4)

? MyAVG(5,5,5,5,null)

Usage example with query:

SELECT MyAVG(Number1, Number2, Number3, Number4, Number5) AS Average
FROM tblNumbers;

Hope this helps,
Usage with query:

Author Comment

ID: 2811722
Paasky, you have helped me agian. Thanks. The other answer was also helpful. Thank you!
LVL 10

Expert Comment

ID: 2811753
Always happy to help you Susan. :o)

Best regards,

Featured Post

Back Up Your Microsoft Windows Server®

Back up all your Microsoft Windows Server – on-premises, in remote locations, in private and hybrid clouds. Your entire Windows Server will be backed up in one easy step with patented, block-level disk imaging. We achieve RTOs (recovery time objectives) as low as 15 seconds.

Question has a verified solution.

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

I see at least one EE question a week that pertains to using temporary tables in MS Access.  But surprisingly, I was unable to find a single article devoted solely to this topic. I don’t intend to describe all of the uses of temporary tables in t…
A simple tool to export all objects of two Access files as text and compare it with Meld, a free diff tool.
In Microsoft Access, learn the trick to repeating sub-report headings at the top of each page. The problem with sub-reports and headings: Add a dummy group to the sub report using the expression =1: Set the “Repeat Section” property of the dummy…
In Microsoft Access, when working with VBA, learn some techniques for writing readable and easily maintained code.

860 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