NUMBERVALUE
NUMERIEKE.WAARDE in Dutch Excel
Turns text into a number using the decimal and thousands separators you name, whatever the regional setting of the computer.
Last updated: 13 October 2026
| Row | A | B | C | D |
|---|---|---|---|---|
| 1 | Invoice no. | Supplier | Amount (text) | Amount |
| 2 | I-2601 | Elektro Groothandel Zuid | 12.450,75 | 12,450.7512.450,75=NUMBERVALUE(C2, ",", ".")=NUMBERVALUE(C2; ","; ".") |
| 3 | I-2602 | Kabelcentrale Rijnmond | 980,00 | |
| 4 | I-2603 | Bouwstoffen Hoogvliet | 7.205,10 | |
| 5 | I-2604 | Gereedschap Direct | 15,50 | |
| 6 | I-2605 | Koperhandel Mulder | 101.300,00 |
Swipe sideways to see all columns
Result: 12,450.7512.450,75
=NUMBERVALUE(C2,",", ".")
=NUMBERVALUE(C2;","; ".")
What NUMBERVALUE does and when to use it
What it does: it turns text such as 1.234,56 into a number, using the decimal and thousands separators you name.
When to use it: when a file written for another regional setting than yours arrives as text, such as a bank file, a subsidiary ledger or a supplier portal. Unlike VALUE, it does not follow the setting of the computer it runs on. For a column you import every month, Power Query is better; for one single column, Text to Columns is quicker.
Two main gains:
- Same answer everywhere: the separators are in the formula, so the result does not depend on the regional setting of whoever opens the workbook.
- Stays live: unlike Text to Columns or Find and Replace, the number updates when the source text changes.
How Excel evaluates it
Excel first removes every space from the text, also those between digits. It then looks at the end for percent signs and remembers how many there are. It reads the rest from left to right:
- an optional sign in front
- digits
- the group separator wherever you put it before the decimal mark (these are dropped)
- the decimal separator, once
The digits become the number, and each percent sign divides it by 100. Empty text returns 0.
If anything is left over that does not fit, such as a letter, a currency symbol or a minus sign at the end, the result is #VALUE!.
Watch out: Leave out the separators and the result depends on who opens the workbook: on English settings "12,5 %" gives 1.25 (the comma is dropped as a thousands mark), and no error warns you.
Mental model
A translator with a glossary: you tell it which mark means "decimal" and which means "thousands", and it reads the text with your glossary instead of the one built into the computer.
Terms used on this page: workbook
NUMBERVALUE(text,[decimal_separator], [group_separator])
NUMBERVALUE(text;[decimal_separator]; [group_separator])
| Argument | Type | Meaning | Default |
|---|---|---|---|
text | Required | The text to turn into a number. | |
decimal_separator | Optional | The character used as the decimal mark in the text. | Decimal separator of the regional setting |
group_separator | Optional | The character used to group thousands in the text. | Group separator of the regional setting |
Return value:A number: the text read with the separators you specify
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
Read purchase invoice amounts written with decimal commas
The purchase ledger of Veldhuis Installatie BV was exported to CSV by a Dutch system. You open it on a laptop with English settings, and the amounts such as 12.450,75 arrive as text. You need the amount in C2 as a real number to start adding up.
| Row | A | B | C | D | E |
|---|---|---|---|---|---|
| 1 | Invoice no. | Supplier | Amount (text) | Amount | |
| 2 | I-2601 | Elektro Groothandel Zuid | 12.450,75 | 12,450.7512.450,75=NUMBERVALUE(C2, ",", ".")=NUMBERVALUE(C2; ","; ".") | |
| 3 | I-2602 | Kabelcentrale Rijnmond | 980,00 | ||
| 4 | I-2603 | Bouwstoffen Hoogvliet | 7.205,10 | ||
| 5 | I-2604 | Gereedschap Direct | 15,50 | ||
| 6 | I-2605 | Koperhandel Mulder | 101.300,00 | ||
| 7 |
Swipe sideways to see all columns
Formula in D2
=NUMBERVALUE(C2,",", ".")
=NUMBERVALUE(C2;","; ".")
Result: 12,450.7512.450,75
Step by step
- Excel takes the text "12.450,75" from
C2as the first argument. - The second argument says that "," is the decimal mark, so the part after the comma, 75, will be the decimals.
- The third argument says that "." groups thousands. It stands before the decimal mark, so Excel drops it: 12450,75.
- The digits 12450 and the decimals 75 give 12,450.7512.450,75. The result is a real number, right-aligned, and SUM will include it.
- Copied down,
D3reads "980,00" and returns 980;D6reads "101.300,00" and returns 101,300101.300.
Watch out: Swap the two separators by accident, NUMBERVALUE(C2, ".", ","), and "12.450,75" returns #VALUE!, because a group separator after the decimal mark is not allowed. A swapped pair on a value without thousands, such as "15,50", does not fail: it returns 1550.
More on this example: why it works
Why it works
The formula carries its own reading rules: the file's decimal comma and thousands period are written in the arguments, so it does not matter whether the laptop thinks in Dutch or English. VALUE would have used the laptop's rules and returned #VALUE! or a wrong number.
Intermediate
Apply depreciation rates that arrive as text with a percent sign
The fixed asset register of Veldhuis Installatie BV was typed into a text field, so the rates read "12,5 %", "20%" and "33,33 %", some with a space before the percent sign. You recalculate the annual depreciation as cost times rate. The workbook is reviewed on computers with both Dutch and English settings.
| Row | A | B | C | D | E |
|---|---|---|---|---|---|
| 1 | Asset | Cost | Rate (text) | Annual depreciation | |
| 2 | Service van | €48,000.00€ 48.000,00 | 12,5 % | €6,000.00€ 6.000,00=B2 * NUMBERVALUE(C2, ",", ".")=B2 * NUMBERVALUE(C2; ","; ".") | |
| 3 | Power tools | €9,600.00€ 9.600,00 | 20% | ||
| 4 | Laptops | €5,400.00€ 5.400,00 | 33,33 % | ||
| 5 | Office furniture | €15,000.00€ 15.000,00 | 10 % | ||
| 6 |
Swipe sideways to see all columns
Formula in D2
=B2 * NUMBERVALUE(C2,",", ".")
=B2 * NUMBERVALUE(C2;","; ".")
Result: €6,000.00€ 6.000,00
Step by step
- Excel evaluates NUMBERVALUE(C2, ",", ".") first.
C2holds "12,5 %". - All spaces are removed, leaving "12,5%". The percent sign at the end is noted: divide by 100 once.
- With the comma as decimal mark, 12,5 is read as 12.5. Then 12.5 / 100 = 0.125.
- Excel multiplies
B2by that number: 48,00048.000 × 0.125 = 6,0006.000. - In
D3the text "20%" gives 0.2 and 9,6009.600 × 0.2 = 1,9201.920. InD4"33,33 %" gives 0.3333 and 5,4005.400 × 0.3333 = 1,799.821.799,82.
Watch out: Leave out the separators on a computer with English settings and "12,5 %" is read as 125 %, so D2 becomes 48,00048.000 × 1.25 = 60,00060.000. Nothing turns red; only the 10 times larger depreciation gives it away. Compare each result with the cost to catch this.
More on this example: why it works
Why it works
NUMBERVALUE ignores spaces and understands the percent sign by itself, so one formula handles all four spellings. The explicit decimal comma matters: it keeps 12,5 from being read as 125 on a computer with English settings.
Advanced
Read amounts from two portals with different separators
For the cut-off test you collect open purchase invoices from two supplier portals. Portal A writes 1.234,56 and portal B writes 2,450.002.450,00. Column B records which decimal mark each line uses. You want one formula for the whole column that reads each amount by its own rule, so that the lines can be summed together.
| Row | A | B | C | D | E |
|---|---|---|---|---|---|
| 1 | Portal | Decimal mark | Amount (text) | Amount | |
| 2 | B | . | 12,300.75 | 12,300.7512.300,75=NUMBERVALUE(C2, B2, IF(B2 = ",", ".", ","))=NUMBERVALUE(C2; B2; IF(B2 = ","; "."; ",")) | |
| 3 | A | , | 1.234,56 | ||
| 4 | A | , | 980,5 | ||
| 5 | B | . | 2,450.00 | ||
| 6 | A | , | 15.000 | ||
| 7 |
Swipe sideways to see all columns
Formula in D2
=NUMBERVALUE(C2,B2, IF(B2 = ",", ".", ","))
=NUMBERVALUE(C2;B2; IF(B2 = ","; "."; ","))
Result: 12,300.7512.300,75
Step by step
- Excel evaluates the inner IF first for
D2.B2holds ".", so the testB2= "," is FALSE and the IF returns its third argument: ",". - NUMBERVALUE now has three arguments: the text "12,300.7512.300,75" from
C2, the decimal separator "." taken fromB2and the group separator "," from the IF. - The comma sits before the period, so it is dropped as a thousands mark: 12300.75. The result is 12,300.7512.300,75.
- In
D3the mark is ",", so the IF returns "." and "1.234,56" becomes 1,234.561.234,56. InD4"980,5" has no thousands mark and becomes 980.5. - In
D6the text is "15.000" with mark ",": the period is a thousands mark, so the result is 15,00015.000, not 15.
Watch out: A mistake in column B is not an error but a wrong number. If a portal A line is labeled ".", then "15.000" returns 15 instead of 15,00015.000, and the total drops by 14,98514.985 without a warning. Test the labels against a few known lines.
More on this example: why it works, 1 more pitfall, 1 variation
Why it works
Both separator arguments can be cell references or formulas, not only typed characters. Column B holds the one fact that differs per source, and the IF derives the opposite character, so a new portal needs one cell, not a new formula.
More to watch out for
- A decimal mark that appears twice, such as "1.234.567" read with "." as decimal mark, returns #VALUE!. That is one of the few cases where the function protects you.
Variations
=NUMBERVALUE(C2,",", ".")
=NUMBERVALUE(C2;","; ".")
Use this when the whole file comes from one source with a fixed format; no label column is needed.
MasterExcel 2021 or later (This example needs Excel 2021 or later)
Control total of a bank export with trailing minus signs
Veldhuis Installatie BV gave you the December bank export as text: Dutch separators, a minus sign after the amount for debits, and a stray space or two. You want the net movement of the six lines in one cell, to agree with the difference between the opening and closing balance on the bank statement. Next month a new file follows with the same layout.
| Row | A | B | C | D | E |
|---|---|---|---|---|---|
| 1 | Date | Description | Amount (text) | Net movement | |
| 2 | 2 Dec 2025 | Customer receipt | 1.250,00 | 9,533.859.533,85=LET( txt, TRIM(C2:C7), isNeg, RIGHT(txt, 1) = "-", body, IF(isNeg, LEFT(txt, LEN(txt) - 1), txt), amount, NUMBERVALUE(body, ",", "."), SUM(IF(isNeg, -amount, amount)) )=LET( txt; TRIM(C2:C7); isNeg; RIGHT(txt; 1) = "-"; body; IF(isNeg; LEFT(txt; LEN(txt) - 1); txt); amount; NUMBERVALUE(body; ","; "."); SUM(IF(isNeg; -amount; amount)) ) | |
| 3 | 5 Dec 2025 | Subcontractor payment | 3.480,50- | ||
| 4 | 9 Dec 2025 | Customer receipt | 720,00 | ||
| 5 | 15 Dec 2025 | Insurance premium | 95,25- | ||
| 6 | 19 Dec 2025 | Customer receipt | 12.000,00 | ||
| 7 | 30 Dec 2025 | Fuel cards | 860,40- | ||
| 8 |
Swipe sideways to see all columns
Formula in D2
=LET( txt,TRIM(C2:C7), isNeg, RIGHT(txt, 1) = "-", body, IF(isNeg, LEFT(txt, LEN(txt) - 1), txt), amount, NUMBERVALUE(body, ",", "."), SUM(IF(isNeg, -amount, amount)) )
=LET( txt;TRIM(C2:C7); isNeg; RIGHT(txt; 1) = "-"; body; IF(isNeg; LEFT(txt; LEN(txt) - 1); txt); amount; NUMBERVALUE(body; ","; "."); SUM(IF(isNeg; -amount; amount)) )
Result: 9,533.859.533,85
Step by step
- txt is TRIM(C2:C7): six texts without the outer spaces. " 720,00 " becomes "720,00"; the others stay as they were.
- isNeg tests the last character of each text: FALSE, TRUE, FALSE, TRUE, FALSE, TRUE. Rows 3, 5 and 7 are debits.
- body removes the trailing minus where isNeg is TRUE: "1.250,00", "3.480,50", "720,00", "95,25", "12.000,00", "860,40".
- amount applies NUMBERVALUE to all six texts at once: 1,2501.250; 3,480.53.480,5; 720; 95.25; 12,00012.000; 860.4.
- The IF in the last line flips the debits to negative: 1,2501.250; -3,480.53.480,5; 720; -95.25; 12,00012.000; -860.4.
- SUM adds them: receipts 1,2501.250 + 720 + 12,00012.000 = 13,97013.970; debits 3,480.53.480,5 + 95.25 + 860.4 = 4,436.154.436,15; net 13,97013.970 - 4,436.154.436,15 = 9,533.859.533,85.
Watch out: The opposite mistake: a minus at the front is already understood by NUMBERVALUE. If you strip every hyphen with SUBSTITUTE instead of testing the last character, "-95,25" loses its sign silently and the total is too high by twice that line.
More on this example: why it works, 1 more pitfall, 1 variation
Why it works
NUMBERVALUE accepts a whole range and returns an array, so one LET replaces a helper column. It ignores spaces by itself, but the test for the trailing minus does not, which is why TRIM sits in front of RIGHT. The trailing minus is not part of what NUMBERVALUE reads, so the sign is handled first, outside the function.
For a bank file you import every month, Power Query is better (set the locale once, then refresh); for a single column you need once, Text to Columns with the Advanced button converts it in place and even has a "Trailing minus for negative numbers" option, but the original text is gone, whereas the formula keeps it next to the result for the audit file.
More to watch out for
- An empty line in
C2:C7gives 0 and a line with text such as "n/a" makes the whole SUM #VALUE!. Compare COUNTA(C2:C7) with the number of lines on the statement before trusting the total.
Variations
=IF(RIGHT(TRIM(C2),1) = "-", -1, 1) * NUMBERVALUE(SUBSTITUTE(C2, "-", ""), ",", ".")
=IF(RIGHT(TRIM(C2);1) = "-"; -1; 1) * NUMBERVALUE(SUBSTITUTE(C2; "-"; ""); ","; ".")
One line per cell, copied down, when you need the signed amount per row and not only the total. It assumes the minus only ever appears at the end.
Common mistakes
| Symptom | Cause | Fix |
|---|---|---|
| Different numbers on different computers | You leave out both separators on a file from another country, and the same text gives a different number on each regional setting. | Always state the separators of the source file: NUMBERVALUE(A2, ",", ".") for 1.234,56. Then the result no longer depends on who opens the workbook. |
| #VALUE! on trailing minus or currency | The text is "1.234,56-" or "EUR 1.234,56" and the result is #VALUE!. | A trailing minus, a currency symbol or a letter is not part of a number. Strip a currency symbol or a letter first with SUBSTITUTE. For a trailing minus, test it with RIGHT and move it to the front with LEFT and LEN, as the Master example does. |
| #VALUE! with the same separator twice | You give the same character for both separators, for example NUMBERVALUE(A2, ",", ","), and get #VALUE!. | Decimal and group separator must differ. If you do not need a group separator, leave the argument out, but then check that the regional setting's group separator is not the same character as your decimal separator. |
| A missing amount counts as 0 | Blank-looking cells give 0 instead of an error, so a missing amount silently counts as zero in the total. | Count the lines first: compare COUNTA of the text column with the number of numeric results, or add a check that flags LEN(A2) = 0. |