Calculate Average with Do While Loop

How to calculate average with a ‘do while’ loop. Calculating average using the worksheet function ‘AVERAGE’ is straight-forward. We can use the same worksheet function average in VBA code as shown below:
Sub calAvg()
dim avg as Long
Set myRange = Range(“B2:B6”)
avg = Application.WorksheetFunction.Average(myRange)
MsgBox (“The average is “) & avg
End Sub

However, the above code has its limitations especially with respect to data that expands automatically or dynamically. Now the looping process using a ‘do while’ loop can easily provide a solution to calculation of the average of dynamically expanding data. In the process we also learn a few interesting things about programming in general and VBA in particular. Watch the video below:


Watch this video on YouTube.

Here’s the complete VBA code to find the average of a set of changing data:

Sub avgUsingDoWhile()
Dim r As Long, totsal As Long, salcount As Long, avgsal As Long
r = 2
totsal = 0
salcount = 0

Do While Cells(r, 1) <> “”
totsal = totsal + Cells(r, 2).Value
salcount = salcount + 1
r = r + 1

avgsal = totsal / salcount
MsgBox “The average salary is ” & avgsal

End Sub


Published by

Dinesh Kumar Takyar

Welcome to! My aim is to help you learn MS Excel including VBA. I always felt that a good way to learn something was to find solutions to problems in that domain. That is why I share these Excel videos with you. Mostly these are questions asked during my corporate training sessions. I've been training individuals and companies in computers since 1991. I did my B. Sc. (Vordiplom), M. Sc. (Diplom) and Ph.D. (Dr. rer. nat.) from Hamburg, Germany. The best thing about solving some of my visitor's questions is that I also gain new insights. For more Excel VBA solutions you may like to visit my YouTube channel: For a structured Excel VBA training course online you can visit:

Leave a Reply

Your email address will not be published. Required fields are marked *