VALUE
WAARDE in Dutch Excel
Turns text that looks like a number, a percentage, a date or a time into a real number Excel can calculate with.
Last updated: 13 October 2026
| Row | A | B | C | D |
|---|---|---|---|---|
| 1 | Relation | Invoice no. | Open amount (text) | Amount |
| 2 | D1001 | 25-1180 | 4250 | 42504250=VALUE(C2)=VALUE(C2) |
| 3 | D1004 | 25-1203 | 1890 | |
| 4 | D1007 | 25-1215 | 12600 | |
| 5 | D1009 | 25-1231 | 730 | |
| 6 | D1012 | 25-1244 | 2150 |
Swipe sideways to see all columns
Result: 4250
=VALUE(C2)
=VALUE(C2)
What VALUE does and when to use it
What it does: it converts a number stored as text into a real number, for example an amount from a CSV export that SUM skips.
When to use it: when text-numbers must be summed, compared or looked up: Excel converts them itself in a calculation, but not in comparisons, lookups or SUM over a range. They arrive from imports and from text functions such as LEFT and MID. If the source uses another decimal separator than your regional setting, use NUMBERVALUE.
How Excel evaluates it
Excel takes the text and removes leading and trailing spaces. It then tries to read it with the rules it uses for typed input under the current regional setting. Those rules accept:
- digits
- an optional sign in front
- a decimal separator
- thousands separators
- a percent sign
- a currency symbol
- a date or time pattern
If the whole text fits one of those patterns, it returns the number, so 15% becomes 0.15 and a date becomes its serial number. If any part does not fit, the result is #VALUE!.
Watch out: VALUE reads text under your own regional setting, so the same text can give a number on one computer and an error on another.
Mental model
VALUE is Excel pretending you typed the text into an empty cell. Whatever that cell would have become as a number, VALUE returns; if the cell would have stayed text, VALUE returns #VALUE!.
Terms used on this page: serial number, range, cell
VALUE(text)
VALUE(text)
| Argument | Type | Meaning |
|---|---|---|
text | Required | The text to convert; its decimal separator must match your regional setting. |
Return value:A number: the text converted to a number
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
Turn exported receivables amounts into numbers
Veldhuis Installatie BV sends its receivables aging list (ouderdomsanalyse debiteuren) as an export in which the open amounts arrive as text: left-aligned, with a green triangle in each cell. You want to reconcile the total to account 1300 Debiteuren, but the total says 0. You add a column that converts each amount to a number so the total works.
| Row | A | B | C | D | E |
|---|---|---|---|---|---|
| 1 | Relation | Invoice no. | Open amount (text) | Amount | |
| 2 | D1001 | 25-1180 | 4250 | 42504250=VALUE(C2)=VALUE(C2) | |
| 3 | D1004 | 25-1203 | 1890 | ||
| 4 | D1007 | 25-1215 | 12600 | ||
| 5 | D1009 | 25-1231 | 730 | ||
| 6 | D1012 | 25-1244 | 2150 | ||
| 7 |
Swipe sideways to see all columns
Formula in D2
=VALUE(C2)
=VALUE(C2)
Result: 42504250
Step by step
- Excel reads
C2and finds the text4250: four characters, 4, 2, 5 and 0. - VALUE checks whether that text would be a number if you typed it into a cell. Four digits with no separator fit the pattern in every regional setting.
- It returns the number 4250.
D2shows 4250, aligned right, without a green triangle. - Copy
D2down toD6. Now =SUM(D2:D6) gives 4250 + 1890 + 12600 + 730 + 2150 = 21620, while =SUM(C2:C6) still gives 0. You can now compare 21620 with the balance of account 1300. - Test it with =ISNUMBER(C2), which is FALSE, and =ISNUMBER(D2), which is TRUE. The value looks identical; only its type changed.
Watch out: If one amount was typed as 1 200 with a space as thousands separator, VALUE may return #VALUE! for that row. The total then turns into an error, which at least shows you where to look.
More on this example: why it works, 2 variations
Why it works
SUM skips text in a range on purpose, so a column of text-numbers adds up to 0 without an error. That is dangerous in an audit: a total of 0 looks like a finding when it is only a data type.
VALUE changes the type, not the digits, and SUM counts the converted column. Whole numbers without separators are read the same way in every regional setting, which is why this example gives 21620 on any computer.
Variations
=--C2
=--C2
The double minus: the first minus forces arithmetic, which converts the text, and the second restores the sign. Same result, shorter, common in array formulas.
=SUM(VALUE(C2:C6))
=SUM(VALUE(C2:C6))
In Excel 2021 or Microsoft 365 one formula converts and totals the whole column: 21620, without a helper column.
Intermediate
Read VAT rates that arrive as text
You recalculate the VAT on sales invoices of the client. The invoice export holds the VAT rate as text such as 21%. One invoice is marked exempt, so there is no rate to read.
You need the rates as real percentages to multiply with the net amounts, and an exempt invoice should count as 0.
| Row | A | B | C | D | E |
|---|---|---|---|---|---|
| 1 | Invoice no. | Net amount | VAT rate (text) | VAT rate | |
| 2 | 25-0412 | €12,500.00€ 12.500,00 | 21% | 21%21%=IFERROR(VALUE(C2), 0)=IFERROR(VALUE(C2); 0) | |
| 3 | 25-0413 | €3,800.00€ 3.800,00 | 9% | ||
| 4 | 25-0414 | €6,400.00€ 6.400,00 | exempt | ||
| 5 | 25-0415 | €920.00€ 920,00 | 21% | ||
| 6 | 25-0416 | €15,000.00€ 15.000,00 | 21% | ||
| 7 |
Swipe sideways to see all columns
Formula in D2
=IFERROR(VALUE(C2),0)
=IFERROR(VALUE(C2);0)
Result: 21%21%
Step by step
- Excel evaluates VALUE(C2) first.
C2holds the text21%: two digits and a percent sign, no decimal separator. - A percent sign is part of what Excel accepts as typed input, so VALUE reads
21%as 21 / 100 = 0.21. The percent sign is the same in both regional settings, so the result is 0.21 everywhere. - VALUE did not return an error, so IFERROR passes 0.21 through.
D2shows 21% once you format it as a percentage. - Copy
D2toD4.C4holds the textexempt, which Excel cannot read as a number, so VALUE returns #VALUE!. Without IFERROR,D4would show that error and every VAT amount built on it would fail too. - With IFERROR, the error is replaced by the second argument, 0.
D4shows 0%, meaning no VAT, which is what an exempt invoice should carry. - The recalculated VAT of invoice
25-0412is then 12500 × 0.21 = 2625. For25-0414it is 6400 × 0 = 0. Over all five invoices: 2625 + 342 + 0 + 193.2 + 3150 = 6310.2, which you compare with the VAT in the client's return.
Watch out: IFERROR also catches a typo. If someone types 2l% with a lowercase L, D shows 0% and the VAT silently disappears from your recalculation. Count the zeros in the column against the number of exempt invoices to spot it.
More on this example: why it works, 1 more pitfall, 2 variations
Why it works
VALUE understands the percent sign because it reads text the way Excel reads typed input, and that makes the conversion independent of the decimal separator. IFERROR turns the one expected failure, a text that is not a number, into an audit rule: exempt means no VAT. The conversion and the fallback are separate steps, so a reader can see which one produced each result.
More to watch out for
- A rate such as
4.5%contains a decimal separator and would be read according to the regional setting. Keep such lists in whole percentages, or see the Master example.
Variations
=B2 * IFERROR(VALUE(C2),0)
=B2 * IFERROR(VALUE(C2);0)
The recalculated VAT in one step: 2625 for invoice 25-0412.
=B2 * C2
=B2 * C2
Arithmetic converts 21% by itself and also gives 2625, but returns #VALUE! for the exempt row. It shows that VALUE is not needed for the conversion here, only for control over the failure.
AdvancedExcel 2021 or later (This example needs Excel 2021 or later)
Match a bank description to a receivable by invoice number
You match bank receipts to the receivables list. The bank reference looks like BNK-10452-D1001: the journal, the invoice number and the relation. The aging list stores invoice numbers as real numbers.
You extract the number with MID and look up the customer, and the lookup keeps returning Not found until the extracted text becomes a number.
| Row | A | B | C | D | E | F | G |
|---|---|---|---|---|---|---|---|
| 1 | Invoice no. | Customer | Open amount | Bank reference | Customer | ||
| 2 | 1044810448 | Bakkerij De Graaf BV | €2,150.00€ 2.150,00 | BNK-10452-D1001 | Hoekstra Installatie BV=XLOOKUP(VALUE(MID(E2, 5, 5)), A2:A6, B2:B6, "Not found")=XLOOKUP(VALUE(MID(E2; 5; 5)); A2:A6; B2:B6; "Not found") | ||
| 3 | 1045010450 | Jansen Transport BV | €8,400.00€ 8.400,00 | ||||
| 4 | 1045210452 | Hoekstra Installatie BV | €4,250.00€ 4.250,00 | ||||
| 5 | 1045510455 | Mulder Groep BV | €730.00€ 730,00 | ||||
| 6 | 1045710457 | Smit Logistiek BV | €12,600.00€ 12.600,00 | ||||
| 7 |
Swipe sideways to see all columns
Formula in F2
=XLOOKUP(VALUE(MID(E2,5, 5)), A2:A6, B2:B6, "Not found")
=XLOOKUP(VALUE(MID(E2;5; 5)); A2:A6; B2:B6; "Not found")
Result: Hoekstra Installatie BV
Step by step
- Excel evaluates the innermost function first. MID(E2, 5, 5) starts at the fifth character of
BNK-10452-D1001(B, N, K and the hyphen come first) and takes 5 characters: the text10452. - VALUE turns the text 10452 into the number 10452. There is no decimal separator in it, so the regional setting plays no role.
- XLOOKUP searches
A2:A6for the number 10452: 10448, no; 10450, no; 10452, yes. The match is in the third cell,A4. - It returns the third cell of
B2:B6, which isB4: Hoekstra Installatie BV. The open amount on that invoice, 4250, is what the receipt should settle. - Without VALUE, XLOOKUP receives the text 10452 and compares it with the number 10452. A lookup does not convert types, so text never equals a number; every row fails and
F2shows Not found. - Change
E2toBNK-10457-C2001andF2shows Smit Logistiek BV.
Watch out: A reference with a six-digit invoice number, such as BNK-104521-D1001, still gives five characters from MID: 10452. The formula silently returns Hoekstra Installatie BV for another invoice. If numbers can grow, split on the hyphens instead of counting characters.
More on this example: why it works, 1 more pitfall, 2 variations
Why it works
Text functions such as MID always return text, even when every character is a digit. XLOOKUP compares type and content, so the extracted number has to become a real number before it can match the aging list. VALUE sits exactly at the seam between the text world of the bank reference and the number world of the subledger.
More to watch out for
- If some invoice numbers in column A are themselves stored as text, VALUE on the lookup side makes those rows unreachable. Check column A with ISNUMBER before trusting a Not found.
Variations
=XLOOKUP(--MID(E2,5, 5), A2:A6, B2:B6, "Not found")
=XLOOKUP(--MID(E2;5; 5); A2:A6; B2:B6; "Not found")
The double minus does the same conversion as VALUE; shorter, but less clear to the next reader.
=XLOOKUP(MID(E2,5, 5), A2:A6 & "", B2:B6, "Not found")
=XLOOKUP(MID(E2;5; 5); A2:A6 & ""; B2:B6; "Not found")
Converts the other side instead: A2:A6 & "" turns the numbers into text. Prefer this when the keys have leading zeros that must count.
MasterExcel 2021 or later (This example needs Excel 2021 or later)
Bank statement amounts with a trailing minus and local decimals
The client's bank statement export, which you use to check the balance of account 1100 Bank around year end (31 December 2025), writes amounts as text with the sign behind the number, 1234.50- for a debit, and with the decimal separator of the regional setting it was exported under. VALUE rejects the trailing minus.
You build one conversion that handles the sign and keeps working for colleagues in both an English and a Dutch setting, as long as the export matches their setting.
| Row | A | B | C | D | E |
|---|---|---|---|---|---|
| 1 | Date | Description | Amount (text) | Amount | |
| 2 | 29 Dec 2025 | Office rent | 1234.50- | -1,234.50-1.234,50=LET( raw, TRIM(C2), isNeg, RIGHT(raw, 1) = "-", digits, IF(isNeg, LEFT(raw, LEN(raw) - 1), raw), amount, VALUE(digits), IF(isNeg, -amount, amount) )=LET( raw; TRIM(C2); isNeg; RIGHT(raw; 1) = "-"; digits; IF(isNeg; LEFT(raw; LEN(raw) - 1); raw); amount; VALUE(digits); IF(isNeg; -amount; amount) ) | |
| 3 | 30 Dec 2025 | Receipt from customer D1001 | 860.00 | ||
| 4 | 31 Dec 2025 | Bank fees | 12.75- | ||
| 5 | 2 Jan 2026 | Refund from supplier C2001 | 45.00 | ||
| 6 |
Swipe sideways to see all columns
Formula in D2
=LET( raw,TRIM(C2), isNeg, RIGHT(raw, 1) = "-", digits, IF(isNeg, LEFT(raw, LEN(raw) - 1), raw), amount, VALUE(digits), IF(isNeg, -amount, amount) )
=LET( raw;TRIM(C2); isNeg; RIGHT(raw; 1) = "-"; digits; IF(isNeg; LEFT(raw; LEN(raw) - 1); raw); amount; VALUE(digits); IF(isNeg; -amount; amount) )
Result: -1,234.50-1.234,50
Step by step
- raw is TRIM(C2): the text
1234.50-, 8 characters. TRIM removes any space the export left at the end, which would otherwise hide the minus from the next step. - isNeg compares the last character with a minus: RIGHT(raw, 1) is -, so isNeg is TRUE.
- digits drops that character: LEN(raw) - 1 = 8 - 1 = 7, and LEFT(raw, 7) is
1234.50. - amount is VALUE(digits). In an English setting the period is the decimal separator, so
1234.50becomes 1234.5. A Dutch reader's cell holds1234,50, and in a Dutch setting the comma is the decimal separator, so the result there is also 1234,5. - The final IF applies the sign: isNeg is TRUE, so the result is -1234.5.
D2shows -1,234.501.234,50 with a number format of two decimals and a thousands separator. Copied to
D3:860.00has no trailing minus, isNeg is FALSE, digits is the whole text, and the result is 860.D4gives -12.75,D5gives 45.The four amounts add up to -1234.5 + 860 - 12.75 + 45 = -342.25. The last row is dated 2 January 2026, so for the cut-off at 31 December 2025 only the first three count: -1234.5 + 860 - 12.75 = -387.25.
Watch out: The mirror-image mistake is removing the minus with SUBSTITUTE(raw, "-", "") and converting the rest. Every amount converts cleanly and every debit becomes a credit: D2 shows 1,234.501.234,50 and the total becomes +2152.25 instead of -342.25.
More on this example: why it works, 2 more pitfalls, 2 variations
Why it works
VALUE accepts a sign in front of a number, not behind it, so the formula moves the sign itself: detect it, cut it off, convert the rest, and apply it again. LET names each stage, and raw is read once. The locale-dependent part is isolated in one step, VALUE(digits), which follows the reader's regional setting.
VALUE accepts any format Excel recognizes, and recognized means recognized under your own regional setting: 1234.50 read on a Dutch computer is not 1234,5.
Do not use this construction when the export's decimal separator does not match the setting of the person opening it, for example a US bank file opened in Dutch Excel. Use instead:
- NUMBERVALUE(digits, ".", ","), which fixes the separators regardless of setting
- Power Query with the column locale set, the more robust route for recurring files, at the cost of a refresh step instead of a live formula
- the Text to Columns wizard, quicker for a one-off file, which has a trailing-minus option under Advanced
More to watch out for
- An English-format file opened in Dutch Excel can turn
1234.50into a number 100 times too large, because the period is then read as a thousands separator, or into #VALUE!. The first is the dangerous one: it looks like a normal amount. Compare the column total with the bank statement before you rely on it. - A cell that holds only a minus, which some exports use for zero, gives an empty digits and VALUE returns #VALUE!. Decide whether that row means 0 and handle it before the conversion.
Variations
=LET( raw,TRIM(C2), isNeg, RIGHT(raw, 1) = "-", digits, IF(isNeg, LEFT(raw, LEN(raw) - 1), raw), amount, NUMBERVALUE(digits, ".", ","), IF(isNeg, -amount, amount) )
=LET( raw;TRIM(C2); isNeg; RIGHT(raw; 1) = "-"; digits; IF(isNeg; LEFT(raw; LEN(raw) - 1); raw); amount; NUMBERVALUE(digits; "."; ","); IF(isNeg; -amount; amount) )
For a file whose separators may not match the reader's setting: NUMBERVALUE uses the decimal and group separators you pass it instead of the regional ones. Here they match the export shown above, a period for decimals and a comma for thousands; for a file with a comma as decimal separator you pass them the other way round.
=IF(RIGHT(TRIM(C2),1) = "-", -VALUE(LEFT(TRIM(C2), LEN(TRIM(C2)) - 1)), VALUE(TRIM(C2)))
=IF(RIGHT(TRIM(C2);1) = "-"; -VALUE(LEFT(TRIM(C2); LEN(TRIM(C2)) - 1)); VALUE(TRIM(C2)))
The same logic without LET for Excel 2019 and older; TRIM(C2) is calculated four times.
Common mistakes
| Symptom | Cause | Fix |
|---|---|---|
| Wrong number, or text, after a CSV import | A CSV opened on a Dutch computer turns 1234.50 into 123450, or leaves it as text, while a colleague with English settings gets 1234.5. | VALUE cannot fix a file written for another regional setting. Use NUMBERVALUE(A2, ".", ",") when the file always uses a period, or import with Power Query and set the locale of the column. |
| #VALUE! for text that looks like a number | VALUE returns #VALUE! for text that looks like a perfectly normal number. | Look for a character you cannot see: a non-breaking space from a web page or a trailing minus from a bank export. Remove it with SUBSTITUTE first (the TRIM page shows how to find a non-breaking space), or see the Master example for the trailing minus. |
| Leading zeros disappear from a code | You used VALUE on a product code such as 00452 and the leading zeros disappeared. | A number has no leading zeros; 00452 becomes 452. Codes that are identifiers, not quantities, should stay text. Convert the other side of the comparison instead. |
| VALUE on a number changes nothing | You wrapped VALUE around a cell that already holds a number and expected a change. | VALUE of a number returns the same number; it does nothing wrong, but it does nothing useful either. Check with ISNUMBER which cells are really text. |