Summary

To calculate average pay per week, excluding weeks where no hours were logged, and without total pay per week already calculated, you can use a formula based on the SUMPRODUCT and COUNTIF functions. In the example shown, the formula in J5 is:

=SUMPRODUCT(D5:I5*D6:I6)/COUNTIF(D5:I5,">0")

which returns the average pay per week, excluding weeks where no hours were logged. This is an array formula, but it is not necessary to enter with control + shift + enter because the SUMPRODUCT function can natively handle most array operations.

Generic formula

=SUMPRODUCT(hours*rate)/COUNTIF(hours,">0")

Explanation 

You might first think this problem can be solved with the AVERAGEIF or AVERAGEIFS function. However, because total pay per week is not part of the worksheet, we can't use these functions because they require a range.

Working from the inside out, we first calculate total pay for all weeks:

D5:I5*D6:I6 // total pay for all weeks

This is an array operation that multiplies hours by rates to calculate weekly pay amounts. The result is an array like this:

{87,63,48,0,12,0} // weekly pay amounts

Since there are 6 weeks in the worksheet, the array contains 6 values. This array is returned directly to SUMPRODUCT function:

SUMPRODUCT({348,252,192,0,48,0})

The SUMPRODUCT function then returns the sum of items in the array, 840. At this point, we have:

=840/COUNTIF(D5:I5,">0")

Next, the COUNTIF function returns a count of values greater than zero in the range D5:I5. Since 2 of the 6 values are blank, and Excel evaluates blank cells as zero, COUNTIF returns 4.

=840/4
=210

The final result is 840 divided by 4, which equals 210

Dave Bruns Profile Picture

AuthorMicrosoft Most Valuable Professional Award

Dave Bruns

Hi - I'm Dave Bruns, and I run Exceljet with my wife, Lisa. Our goal is to help you work faster in Excel. We create short videos, and clear examples of formulas, functions, pivot tables, conditional formatting, and charts.