AVERAGE
GEMIDDELDE in Dutch Excel
Returns the arithmetic mean: the sum of the numbers divided by how many numbers there are, with blanks and text left out.
Last updated: 13 October 2026
| Row | A | B | C | D |
|---|---|---|---|---|
| 1 | Period | Personnel costs | Average per month | |
| 2 | 11 | €48,250.00€ 48.250,00 | €49,000.00€ 49.000,00=AVERAGE(B2:B7)=AVERAGE(B2:B7) | |
| 3 | 22 | €47,900.00€ 47.900,00 | ||
| 4 | 33 | €49,100.00€ 49.100,00 | ||
| 5 | 44 | €48,600.00€ 48.600,00 | ||
| 6 | 55 | €51,350.00€ 51.350,00 | ||
| 7 | 66 | €48,800.00€ 48.800,00 |
Swipe sideways to see all columns
Result: €49,000.00€ 49.000,00
=AVERAGE(B2:B7)
=AVERAGE(B2:B7)
What AVERAGE does and when to use it
What it does: it adds the numbers in a range and divides by how many there are, for example the average monthly personnel cost over twelve months.
When to use it: for a typical value in a list. When only some rows should count, use AVERAGEIFS. For a list of rates, such as a depreciation rate per asset category, weight by the amounts (see the Master example). It replaces SUM divided by COUNT.
How Excel evaluates it
Excel collects values from every argument. In a range it keeps numbers, zeros included, and drops:
- blank cells
- text
- TRUE or FALSE
- numbers stored as text, without a warning
A value typed directly into the formula is converted where possible, so AVERAGE("4", 2) is 3. Excel then adds the kept values and divides by how many there are. If no numbers are left, it returns #DIV/0!, and if any cell holds an error, that error comes back instead.
Watch out: AVERAGE does not find a blank cell, so it does not count; a cell with 0 is found and pulls the average down.
Mental model
Sharing a pizza bill: everyone who ate pays an equal part, including the friend who had only water and pays 0 towards the food. The friend who did not come is not in the count at all.
Terms used on this page: error value, argument, range, cell
AVERAGE(number1,[number2], ...)
AVERAGE(number1;[number2]; ...)
| Argument | Type | Meaning |
|---|---|---|
number1 | Required | The first number, cell or range to average. |
number2 | Optional | More numbers, cells or ranges, up to 255 arguments in total. |
Return value:A number: the arithmetic mean of the numbers
Formulas use commas (,) between arguments, as in English Excel. Formulas use semicolons (;) between arguments, as in Dutch Excel. Formulas use commas (,) between arguments, as in English Excel; Dutch Excel uses semicolons (;).
Worked examples
Beginner
Average monthly personnel costs for an analytical review
You are doing an analytical review at Veldhuis Installatie BV. The ledger shows account 4000 Personeelskosten for periods 1 to 6 of 2025. You want the average per month as a first expectation, to compare later with the payroll summary (loonjournaal).
| Row | A | B | C | D | E |
|---|---|---|---|---|---|
| 1 | Period | Personnel costs | Average per month | ||
| 2 | 11 | €48,250.00€ 48.250,00 | €49,000.00€ 49.000,00=AVERAGE(B2:B7)=AVERAGE(B2:B7) | ||
| 3 | 22 | €47,900.00€ 47.900,00 | |||
| 4 | 33 | €49,100.00€ 49.100,00 | |||
| 5 | 44 | €48,600.00€ 48.600,00 | |||
| 6 | 55 | €51,350.00€ 51.350,00 | |||
| 7 | 66 | €48,800.00€ 48.800,00 | |||
| 8 |
Swipe sideways to see all columns
Formula in D2
=AVERAGE(B2:B7)
=AVERAGE(B2:B7)
Result: €49,000.00€ 49.000,00
Step by step
- Excel reads the range
B2:B7and finds six cells, all holding numbers. - It adds them: 48,25048.250 + 47,90047.900 + 49,10049.100 + 48,60048.600 + 51,35051.350 + 48,80048.800 = 294,000294.000.
- It counts them: 6.
- It divides: 294,000294.000 / 6 = 49,00049.000. That lands in
D2. - If period 5 is corrected from 51,35051.350 to 52,55052.550, the sum becomes 295,200295.200 and the average 295,200295.200 / 6 = 49,20049.200.
Watch out: Period 5 is 2,3502.350 above the average of 49,00049.000, but the average alone does not tell you whether that is a deviation worth investigating. It is an expectation, not a threshold; set the threshold from your performance materiality.
More on this example: why it works
Why it works
Every cell in the range is a number, so the sum and the count cover the same six periods. AVERAGE does both steps at once, which is why it matches SUM(B2:B7) / COUNT(B2:B7) exactly.
Intermediate
Manual journal entries per period with a zero and a missing period
For journal entry testing you count the manual entries (journal MEM) the client posted per period. In period 3 there were genuinely 0. The export for period 5 has not been delivered yet, so that cell is blank.
You want the average per period, rounded to one decimal for your working paper.
| Row | A | B | C | D | E | F |
|---|---|---|---|---|---|---|
| 1 | Period | Manual entries | Average per period | 10.810,8=ROUND(AVERAGE(B2:B8), 1)=ROUND(AVERAGE(B2:B8); 1) | ||
| 2 | 11 | 1818 | ||||
| 3 | 22 | 1212 | ||||
| 4 | 33 | 00 | ||||
| 5 | 44 | 1515 | ||||
| 6 | 55 | |||||
| 7 | 66 | 88 | ||||
| 8 | 77 | 1212 | ||||
| 9 |
Swipe sideways to see all columns
Formula in E1
=ROUND(AVERAGE(B2:B8),1)
=ROUND(AVERAGE(B2:B8);1)
Result: 10.810,8
Step by step
- Excel evaluates the inner AVERAGE first. It reads
B2:B8, seven cells.B6(period 5) is blank and is left out.B4(period 3) holds 0, which is a number, so it stays. - Six numbers remain: 18 + 12 + 0 + 15 + 8 + 12 = 65.
- 65 / 6 = 10.8333... AVERAGE returns that full value.
- ROUND with num_digits 1 keeps one decimal: the next digit is 3, so 10.8333 becomes 10.8. The cell now stores 10.8, not a longer number formatted to look short.
- Contrast the alternatives. If period 5 were typed as 0, the count would be 7 and the result 65 / 7 = 9.3. If period 3 were left blank as well, the count would be 5 and the result 65 / 5 = 13.0. Three answers from the same entries, depending only on blank versus zero.
- Enter 14 for period 5 once the export arrives and the result becomes 79 / 7 = 11.3.
Watch out: If someone types a dash or 'n/a' in period 5, AVERAGE skips it like a blank, which is harmless here. If period 7 arrives as the text '12', it is skipped too and the result silently becomes 53 / 5 = 10.6.
More on this example: why it works, 1 more pitfall, 1 variation
Why it works
AVERAGE treats a blank as 'no data' and a zero as 'data that happens to be zero', which is exactly the distinction you need: the period that was not delivered should not drag the average down, the period without manual entries should. ROUND only shortens the final result, so the average itself is calculated on the full values.
More to watch out for
- A formula in period 5 that returns "" for 'not yet delivered' is text, not blank, and is skipped the same way. A formula that returns 0 for 'not yet delivered' is counted and lowers the average.
Variations
=ROUND(AVERAGEIF(B2:B8,"<>0"), 1)
=ROUND(AVERAGEIF(B2:B8;"<>0"); 1)
Average of the periods with at least one manual entry: 65 / 5 = 13.0. Use it only when a zero means 'not recorded' rather than 'nothing was posted'.
Advanced
Average amount of manual entries up to a chosen period
From the XAF auditfile you have one row per entry with entry number, journal, period and amount. For your interim work you want the average amount of the entries in the journal you pick (here MEM) up to and including the period you pick.
You reuse the same two selector cells for other journals, and a journal without entries should show a message, not an error.
| Row | A | B | C | D | E | F | G | H |
|---|---|---|---|---|---|---|---|---|
| 1 | Entry no. | Journal | Period | Amount | Journal | MEM | ||
| 2 | 25-0101 | MEM | 11 | €4,800.00€ 4.800,00 | Up to period | 66 | ||
| 3 | 25-0188 | INK | 22 | €2,400.00€ 2.400,00 | Average amount | €5,100.00€ 5.100,00=IFERROR(AVERAGEIFS(D2:D9, B2:B9, G1, C2:C9, "<="&G2), "No entries")=IFERROR(AVERAGEIFS(D2:D9; B2:B9; G1; C2:C9; "<="&G2); "No entries") | ||
| 4 | 25-0214 | MEM | 44 | €7,950.00€ 7.950,00 | ||||
| 5 | 25-0230 | VRK | 22 | €12,000.00€ 12.000,00 | ||||
| 6 | 25-0297 | MEM | 55 | €2,550.00€ 2.550,00 | ||||
| 7 | 25-0612 | MEM | 99 | €15,500.00€ 15.500,00 | ||||
| 8 | 25-0654 | INK | 55 | €3,300.00€ 3.300,00 | ||||
| 9 | 25-0733 | MEM | 1111 | €9,000.00€ 9.000,00 | ||||
| 10 |
Swipe sideways to see all columns
Formula in G3
=IFERROR(AVERAGEIFS(D2:D9,B2:B9, G1, C2:C9, "<="&G2), "No entries")
=IFERROR(AVERAGEIFS(D2:D9;B2:B9; G1; C2:C9; "<="&G2); "No entries")
Result: €5,100.00€ 5.100,00
Step by step
- Excel evaluates AVERAGEIFS first. The second criterion is built from
G2: "<="&6 becomes the text "<=6". - Test one on
B2:B9againstMEM: rows 2, 4, 6, 7 and 9 pass. - Test two on
C2:C9against<=6: of those rows, row 7 (period 9) and row 9 (period 11) fail. Rows 2, 4 and 6 (periods 1, 4 and 5) pass both tests. - AVERAGEIFS averages the matching cells of
D2:D9: (4,8004.800 + 7,9507.950 + 2,5502.550) / 3 = 15,30015.300 / 3 = 5,1005.100. - 5,1005.100 is not an error, so IFERROR passes it through to
G3. - Type
BNKinG1. No row passes the first test, AVERAGEIFS has nothing to divide by and returns #DIV/0!, and IFERROR replaces it with No entries.
Watch out: IFERROR also hides a broken formula: if the amount column is one row shorter than the others, AVERAGEIFS returns #VALUE! and the sheet shows No entries, which is false. Test the formula without IFERROR first.
More on this example: why it works, 2 more pitfalls, 1 variation
Why it works
AVERAGEIFS applies the same AND logic as SUMIFS and then divides the sum of the matching cells by their count, so the conditions decide both parts of the average at once. The only error it produces on clean data is #DIV/0! for an empty selection, which is what IFERROR is catching here.
More to watch out for
- Amounts that arrive as text, for example '7950' pasted from a CSV export, are skipped by AVERAGEIFS, and the average quietly covers fewer entries than it seems. Compare the count of matching rows with COUNTIFS.
- The argument order differs from AVERAGEIF: in AVERAGEIFS the average_range comes first. Swapping them returns a wrong number or #DIV/0!.
Variations
=AVERAGE(FILTER(D2:D9,(B2:B9 = G1) * (C2:C9 <= G2)))
=AVERAGE(FILTER(D2:D9;(B2:B9 = G1) * (C2:C9 <= G2)))
The same 5,1005.100 via FILTER; an empty selection shows #CALC!. Prefer it when the condition needs a calculation SUMIFS-style criteria cannot express.
MasterExcel 2021 or later (This example needs Excel 2021 or later)
Weighted average depreciation rate of the fixed asset register
The client's fixed asset register (activastaat) gives per category the acquisition cost and the depreciation rate. For your analytical review of depreciation you want one average rate for all assets together, to multiply with total cost as an expectation.
The categories differ a lot in size, so averaging the rates would let IT equipment count as much as buildings.
| Row | A | B | C | D | E | F |
|---|---|---|---|---|---|---|
| 1 | Category | Acquisition cost | Depreciation rate | Weighted rate | ||
| 2 | Buildings | €1,200,000.00€ 1.200.000,00 | 2.5%2,5% | 7.46%7,46%=LET( cost, B2:B6, rate, C2:C6, total, SUM(cost), IF(total = 0, 0, ROUND(SUMPRODUCT(cost, rate) / total, 4)) )=LET( cost; B2:B6; rate; C2:C6; total; SUM(cost); IF(total = 0; 0; ROUND(SUMPRODUCT(cost; rate) / total; 4)) ) | ||
| 3 | Machinery | €450,000.00€ 450.000,00 | 10%10% | |||
| 4 | Furniture | €120,000.00€ 120.000,00 | 20%20% | |||
| 5 | Vehicles | €180,000.00€ 180.000,00 | 20%20% | |||
| 6 | IT equipment | €60,000.00€ 60.000,00 | 25%25% | |||
| 7 |
Swipe sideways to see all columns
Formula in E2
=LET( cost,B2:B6, rate, C2:C6, total, SUM(cost), IF(total = 0, 0, ROUND(SUMPRODUCT(cost, rate) / total, 4)) )
=LET( cost;B2:B6; rate; C2:C6; total; SUM(cost); IF(total = 0; 0; ROUND(SUMPRODUCT(cost; rate) / total; 4)) )
Result: 7.46%7,46%
Step by step
- LET names the acquisition costs cost and the rates rate. total is SUM(cost): 1,200,0001.200.000 + 450,000450.000 + 120,000120.000 + 180,000180.000 + 60,00060.000 = 2,010,0002.010.000.
total is not 0, so IF evaluates the calculation. SUMPRODUCT multiplies each cost by its rate, which gives the yearly depreciation per category:
- 1,200,0001.200.000 × 0.025 = 30,00030.000
- 450,000450.000 × 0.10 = 45,00045.000
- 120,000120.000 × 0.20 = 24,00024.000
- 180,000180.000 × 0.20 = 36,00036.000
- 60,00060.000 × 0.25 = 15,00015.000
- It adds them: 30,00030.000 + 45,00045.000 + 24,00024.000 + 36,00036.000 + 15,00015.000 = 150,000150.000, the expected total depreciation for the year.
- Dividing by total gives 150,000150.000 / 2,010,0002.010.000 = 0.074627, and ROUND to four decimals gives 0.0746, shown as 7.46%.
- Compare AVERAGE(C2:C6): (0.025 + 0.10 + 0.20 + 0.20 + 0.25) / 5 = 0.775 / 5 = 0.155, or 15.5%. Every category now weighs the same, so IT equipment with 60,00060.000 at 25% counts as much as buildings with 1,200,0001.200.000 at 2.5%. The plain average lies 0.155 - 0.0746 = 0.0804, or 8.04 percentage points, above the weighted one.
- If the register were empty or all costs 0, total would be 0 and IF would return 0 instead of #DIV/0!.
Watch out: The mirror-image mistake is AVERAGE(C2:C6), 15.5%: a plausible rate that is more than double the weighted rate of 7.46%, and your expected depreciation would be too high by about 161,500161.500 (15.5% of 2,010,0002.010.000 is 311,550311.550 against 150,000150.000).
More on this example: why it works, 2 more pitfalls, 1 variation
Why it works
A weighted average is the total of cost times rate divided by total cost, so the correct company rate is total yearly depreciation divided by total acquisition cost. SUMPRODUCT does the cost times rate for every row in one step.
Do not use this construction when the register already lists the yearly depreciation charge per asset: SUM(charge) / SUM(cost) is exact and needs no rates. That alternative is clearer to review, but it needs a charge column that the client's specification may not have.
More to watch out for
- Dividing SUMPRODUCT by COUNT(cost) instead of SUM(cost) gives 150,000150.000 / 5 = 30,00030.000, which is the average depreciation per category, not a rate. The size of the number usually gives it away.
- A category with a cost but a blank rate counts its cost in total but adds no depreciation, which pulls the result down. Check that every row with a cost has a rate.
Variations
=SUMPRODUCT(B2:B6,C2:C6) / SUM(B2:B6)
=SUMPRODUCT(B2:B6;C2:C6) / SUM(B2:B6)
The bare weighted average without LET, rounding or the zero guard: 0.074627.
Common mistakes
| Symptom | Cause | Fix |
|---|---|---|
| The average drops after entering 0 for gaps | Missing values are entered as 0 instead of left blank, and the average drops. | Leave cells blank when a value is unknown, and use 0 only for a real zero. To exclude zeros already in the data, use AVERAGEIF(B2:B8, "<>0"). |
| A plausible average that is wrong | Some figures are numbers stored as text, so they fall out of both the sum and the count. The result looks reasonable and is wrong. | Compare COUNT(range) with the number of rows you expect. If they differ, convert the column with Convert to Number. |
| Average of rates ignores the amounts | Averaging a column of rates, such as the depreciation rate per asset category, gives every category the same weight however large its cost. | Weight by the amounts: SUMPRODUCT(amounts, rates) / SUM(amounts). |