LOWER
KLEINE.LETTERS in Dutch Excel
Converts every letter in a text to lowercase and leaves digits, spaces and punctuation as they are.
Last updated: 13 October 2026
| Row | A | B | C | D |
|---|---|---|---|---|
| 1 | Relation | Invoice no. as typed | Open amount | Invoice no. lowercase |
| 2 | D1001 | VF-25-0412 | €12,100.00€ 12.100,00 | vf-25-0412=LOWER(B2)=LOWER(B2) |
| 3 | D1002 | vf-25-0413 | €4,500.00€ 4.500,00 | |
| 4 | D1003 | Vf-25-0414 | €8,470.00€ 8.470,00 | |
| 5 | D1004 | VF-25-0415 | €2,178.00€ 2.178,00 | |
| 6 | D1005 | Vf-25-0416 | €990.00€ 990,00 |
Swipe sideways to see all columns
Result: vf-25-0412
=LOWER(B2)
=LOWER(B2)
What LOWER does and when to use it
What it does: it turns every letter of a text into lowercase, for example Info@Example.NL into info@example.nl.
When to use it: for values that are written in lowercase and that other systems compare case-sensitively: e-mail addresses, usernames, URLs, tags. Inside Excel it matters when the key feeds EXACT, FIND or SUBSTITUTE, which see case. For a name you want to display, PROPER is usually better.
How Excel evaluates it
Excel reads the argument and takes the cell's value if it is a reference; an empty cell gives an empty text. It then walks through the text character by character.
Every uppercase letter, accented ones included, is replaced by its lowercase form; every other character is copied unchanged. The result is always text, even if the input was a number, and it is a new value: the source cell is not touched.
Watch out: Inside Excel you need LOWER less often than you would think: =, COUNTIF, XLOOKUP and MATCH already treat Bakker and bakker as equal, so wrapping a lookup key in LOWER changes nothing.
Mental model
It is Caps Lock switched off for the whole cell at once: letters drop to lowercase, everything else does not notice.
LOWER(text)
LOWER(text)
| Argument | Type | Meaning |
|---|---|---|
text | Required | The text to convert; a cell reference or text in quotes. |
Return value:Text: the text in lowercase
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
Lowercase invoice numbers from the aging list
Veldhuis Installatie BV gave you its receivables aging list. The invoice numbers were typed by different people: VF-25-0412, vf-25-0413, Vf-25-0414.
Your data analysis tool compares invoice numbers character by character, and the general ledger export holds them in lowercase. You add a column with every invoice number in lowercase before you match the two.
| Row | A | B | C | D | E |
|---|---|---|---|---|---|
| 1 | Relation | Invoice no. as typed | Open amount | Invoice no. lowercase | |
| 2 | D1001 | VF-25-0412 | €12,100.00€ 12.100,00 | vf-25-0412=LOWER(B2)=LOWER(B2) | |
| 3 | D1002 | vf-25-0413 | €4,500.00€ 4.500,00 | ||
| 4 | D1003 | Vf-25-0414 | €8,470.00€ 8.470,00 | ||
| 5 | D1004 | VF-25-0415 | €2,178.00€ 2.178,00 | ||
| 6 | D1005 | Vf-25-0416 | €990.00€ 990,00 | ||
| 7 |
Swipe sideways to see all columns
Formula in D2
=LOWER(B2)
=LOWER(B2)
Result: vf-25-0412
Step by step
- Excel reads
B2and finds the textVF-25-0412, 10 characters. - It goes through the characters in order.
VbecomesvandFbecomesf. The two hyphens and the digits 2, 5, 0, 4, 1, 2 are not letters and are copied as they are. D2showsvf-25-0412, still 10 characters: LOWER changed two letters and nothing else.- Copy
D2down toD6. The number in row 3 was already lowercase and comes back identical, andVf-25-0414becomesvf-25-0414.
Watch out: Excel itself already treats VF-25-0412 and vf-25-0412 as equal, so a lookup in Excel would have worked without LOWER. The column only matters because the tool you export to is case-sensitive.
More on this example: why it works, 1 variation
Why it works
Only letters have a lowercase form, so LOWER cannot damage the parts of an invoice number that carry meaning: the hyphens and the digits. After LOWER every spelling of the same invoice number is the same string of characters, which is what a tool that compares character by character needs.
Variations
=LOWER(B2:B6)
=LOWER(B2:B6)
In Excel 2021 or Microsoft 365 one formula in D2 spills all five invoice numbers; nothing to copy down.
Intermediate
Build a match key from a ledger description
You match the sales invoices in the receivables subledger to the revenue postings on journal VRK in the general ledger. The subledger holds invoice numbers such as vf-25-0414.
In the XAF auditfile the number sits in the description with a space instead of a hyphen and in mixed case: Vf 25-0414. You turn the description into the subledger format: spaces become hyphens, letters become lowercase.
| Row | A | B | C | D | E | F |
|---|---|---|---|---|---|---|
| 1 | Entry no. | Description | Credit | Match key | ||
| 2 | 25-0412 | VF 25-0412 | €12,100.00€ 12.100,00 | |||
| 3 | 25-0413 | vf 25-0413 | €4,500.00€ 4.500,00 | |||
| 4 | 25-0414 | Vf 25-0414 | €8,470.00€ 8.470,00 | vf-25-0414=LOWER(SUBSTITUTE(B4, " ", "-"))=LOWER(SUBSTITUTE(B4; " "; "-")) | ||
| 5 | 25-0415 | VF 25-0415 | €2,178.00€ 2.178,00 | |||
| 6 |
Swipe sideways to see all columns
Formula in E4
=LOWER(SUBSTITUTE(B4," ", "-"))
=LOWER(SUBSTITUTE(B4;" "; "-"))
Result: vf-25-0414
Step by step
- Excel evaluates the inner function first. SUBSTITUTE reads
B4,Vf 25-0414, and replaces the one space with a hyphen:Vf-25-0414. - LOWER receives
Vf-25-0414and lowercases the one capital:vf-25-0414. The hyphens and digits are not letters and stay. E4showsvf-25-0414. The same formula inE2givesvf-25-0412(VandFbecome lowercase) and inE3givesvf-25-0413(nothing to lowercase, the space becomes a hyphen).- Without LOWER the key would be
Vf-25-0414. Excel would still see it as equal tovf-25-0414, but your data analysis tool would not, which is the reason LOWER is in the formula.
Watch out: A description with a space at the start or end gives a key with a hyphen at the start or end. Add TRIM inside SUBSTITUTE if the export is not clean.
More on this example: why it works, 1 more pitfall, 1 variation
Why it works
SUBSTITUTE fixes the layout of the number and LOWER fixes the case. LOWER comes last, on the finished text, so one call covers every letter. SUBSTITUTE does nothing when there is no space, so the formula is safe to copy down over every row.
More to watch out for
- The formula assumes the description holds only the invoice number. If it also holds free text, such as a customer name, you must first cut the number out with MID and FIND.
Variations
=LOWER(SUBSTITUTE(TRIM(B4)," ", "-"))
=LOWER(SUBSTITUTE(TRIM(B4);" "; "-"))
The same result for a clean description; it also removes spaces at the start and end.
Advanced
Count a keyword in journal descriptions regardless of case
For journal entry testing you look at the manual MEM entries of Veldhuis Installatie BV. You want to know how often the word storno (a reversal) appears in the descriptions, because reversals need explaining. The preparers wrote Storno, storno and STORNO, and one description uses it twice.
COUNTIF cannot count inside text, and SUBSTITUTE, the usual counting trick, is case-sensitive. You lowercase the descriptions first so one SUBSTITUTE catches every spelling.
| Row | A | B | C | D | E | F |
|---|---|---|---|---|---|---|
| 1 | Entry no. | Description | Search word | Mentions | ||
| 2 | M-0101 | Storno invoice 25-0388 | storno | 44=SUMPRODUCT((LEN(B2:B6) - LEN(SUBSTITUTE(LOWER(B2:B6), D2, ""))) / LEN(D2))=SUMPRODUCT((LEN(B2:B6) - LEN(SUBSTITUTE(LOWER(B2:B6); D2; ""))) / LEN(D2)) | ||
| 3 | M-0102 | Accrual rent December | ||||
| 4 | M-0103 | STORNO of M-0101; storno bank fee | ||||
| 5 | M-0104 | Depreciation December | ||||
| 6 | M-0105 | Storno of payroll accrual | ||||
| 7 |
Swipe sideways to see all columns
Formula in E2
=SUMPRODUCT((LEN(B2:B6) - LEN(SUBSTITUTE(LOWER(B2:B6),D2, ""))) / LEN(D2))
=SUMPRODUCT((LEN(B2:B6) - LEN(SUBSTITUTE(LOWER(B2:B6);D2; ""))) / LEN(D2))
Result: 44
Step by step
- Excel starts inside. LOWER(B2:B6) gives five descriptions in lowercase; the first becomes storno invoice 25-0388, and the third becomes storno of m-0101; storno bank fee.
- SUBSTITUTE removes every occurrence of
D2,storno, from each lowercase description. In description 3 both occurrences disappear; in description 2 nothing changes because the word is not there. - LEN of the original minus LEN of the stripped text gives the characters removed per description: 6, 0, 12, 0, 6 (the Dutch descriptions give the same five numbers, because only the word storno was removed).
- Dividing by LEN(D2), which is 6, turns characters into occurrences: {1;0;2;0;1}.
- SUMPRODUCT adds them: 1 + 0 + 2 + 0 + 1 = 4.
E2shows 4, one more than the number of entries that mention it, because entryM-0103counts twice. - Remove LOWER and the count drops to 1:
StornoinM-0101,STORNOinM-0103andStornoinM-0105no longer match the lowercase search word; only the lowercasestornoinM-0103does.
Watch out: Type Storno with a capital in D2 and the formula silently returns 0: the descriptions are lowercased, the search word is not, and nothing matches. Wrap D2 in LOWER as well if other people type the search word.
More on this example: why it works, 1 more pitfall, 2 variations
Why it works
SUBSTITUTE is case-sensitive, so it needs both sides in the same case; LOWER on the descriptions does that in one step, provided the search word in D2 is lowercase too. The length difference trick counts characters, and dividing by the word length converts that to a count of words. The whole thing runs as arrays inside SUMPRODUCT, one row per description, without a helper column.
More to watch out for
- The count is by character sequence, not by word: a description containing
stornoboekingalso counts, becausestornois inside it. Search forstornofollowed by a space if that matters.
Variations
=SUMPRODUCT(--ISNUMBER(SEARCH(D2,B2:B6)))
=SUMPRODUCT(--ISNUMBER(SEARCH(D2;B2:B6)))
Counts entries, not mentions: 3 here. SEARCH ignores case by itself, so no LOWER is needed, but a description that mentions the word twice counts once.
=COUNTIF(B2:B6,"*" & D2 & "*")
=COUNTIF(B2:B6;"*" & D2 & "*")
Also counts entries (3) and also ignores case. The shortest option when one hit per entry is enough.
MasterExcel 2021 or later (This example needs Excel 2021 or later)
A duplicate-invoice key that survives export, in LET
You test purchases for duplicate invoices. The INK journal export holds the supplier relation and a reference field such as Inv: FA 25-0388, typed with different capitals, extra spaces and the number after a prefix. Your data analysis tool compares keys byte for byte.
You build the key in Excel from three parts, all lowercase, so the same invoice booked twice gets the same key:
- supplier code
- invoice number without prefix and spaces
- amount
The formula will be copied down 20,00020.000 rows, so it has to be readable enough to review once and trust everywhere.
| Row | A | B | C | D | E | F |
|---|---|---|---|---|---|---|
| 1 | Relation | Reference | Amount | Key | ||
| 2 | C2001 | Inv: FA 25-0388 | €4,840.00€ 4.840,00 | |||
| 3 | C2002 | Inv: FA 25-0391 | €12,100.00€ 12.100,00 | c2002|fa25-0391|12100=LET( rel, TRIM(A3), inv, SUBSTITUTE(TRIM(MID(B3, FIND(":", B3) + 1, LEN(B3))), " ", ""), amt, C3, LOWER(rel & "|" & inv & "|" & amt) )=LET( rel; TRIM(A3); inv; SUBSTITUTE(TRIM(MID(B3; FIND(":"; B3) + 1; LEN(B3))); " "; ""); amt; C3; LOWER(rel & "|" & inv & "|" & amt) ) | ||
| 4 | C2003 | Inv: VF 25-0392 | €605.00€ 605,00 | |||
| 5 | c2001 | INV: fa 25-0388 | €4,840.00€ 4.840,00 | |||
| 6 |
Swipe sideways to see all columns
Formula in E3
=LET( rel,TRIM(A3), inv, SUBSTITUTE(TRIM(MID(B3, FIND(":", B3) + 1, LEN(B3))), " ", ""), amt, C3, LOWER(rel & "|" & inv & "|" & amt) )
=LET( rel;TRIM(A3); inv; SUBSTITUTE(TRIM(MID(B3; FIND(":"; B3) + 1; LEN(B3))); " "; ""); amt; C3; LOWER(rel & "|" & inv & "|" & amt) )
Result: c2002|fa25-0391|12100
Step by step
- LET names the pieces. rel is TRIM(A3): the spaces at the start and end go, leaving
C2002, 5 characters. - inv, innermost first: FIND locates the colon in Inv: FA 25-0391 (16 characters) at position 4. MID starts at 4 + 1 = 5 and asks for LEN(B3) = 16 characters; only 12 remain, and MID returns those without complaint: FA 25-0391 with a space at both ends.
- TRIM removes the outer spaces: FA 25-0391, 10 characters. SUBSTITUTE removes the remaining space: FA25-0391, 9 characters.
- bedrag is C3, 12100.
- The & operator joins rel, a pipe, inv, a pipe and amt: C2002|FA25-0391|12100. The number 12100 becomes text 12100 in the join.
- LOWER, applied last, lowercases every letter:
c2002|fa25-0391|12100. That isE3. - Copied to
E2andE5, the two rows of the same invoice both givec2001|fa25-0388|4840:C2001andc2001differ in case,FAandfadiffer in case, and the keys are identical, so the tool flags the duplicate.
Watch out: The mirror image, LOWER inside the pieces and the join on the outside, gives the same result here but breaks the moment someone adds a piece and forgets its LOWER. One LOWER on the outside cannot be forgotten.
More on this example: why it works, 2 more pitfalls, 1 variation
Why it works
Order is the point:
- TRIM first, so edge spaces do not survive
- SUBSTITUTE next, on the extracted number
- LOWER last, on the assembled key, so nothing capitalized can slip in after it
Excel itself would match these keys without LOWER, but the receiving tool will not, and that is the only reason LOWER is here. LET gives each piece a name, which keeps the formula readable at 20,00020.000 rows.
Do not use this construction when the entry number or a unique document ID is reliable: then COUNTIF on that column finds duplicates with no key at all. The alternative is Remove Duplicates in Power Query on lowercased columns, with the trade-off that it refreshes on demand instead of recalculating live.
More to watch out for
- A reference without a colon makes FIND return #VALUE! and the whole key fails. Wrap the extraction in IFERROR(..., B3) if some suppliers use another format.
- Amounts are joined as typed, so an amount that differs by a rounding cent gets a different key. Round the amount first if you want to catch near duplicates.
Variations
=LOWER(TRIM(A3) & "|" & SUBSTITUTE(TRIM(TEXTAFTER(B3,":")), " ", "") & "|" & C3)
=LOWER(TRIM(A3) & "|" & SUBSTITUTE(TRIM(TEXTAFTER(B3;":")); " "; "") & "|" & C3)
TEXTAFTER (Excel 2024 or Microsoft 365) replaces the MID and FIND pair and drops LET; fine when each input is used once anyway.
Common mistakes
| Symptom | Cause | Fix |
|---|---|---|
| #N/A remains after wrapping the key | You wrapped a VLOOKUP or XLOOKUP key in LOWER to fix a #N/A and the #N/A is still there. | Those functions never cared about case. The mismatch is a space, a non-breaking space or a text-versus-number difference. Test with LEN on both sides, then TRIM. |
| Totals drop to 0 after LOWER | A column of order numbers went through LOWER and the totals at the bottom dropped to 0. | LOWER turns numbers into text and SUM ignores text. Apply LOWER only to text columns, or guard it with IF(ISTEXT(...)). |
| Every letter lowercased, even in names | You expected LOWER to remove the capitals from the middle of a name and leave the first letter alone; it lowercased everything. | LOWER has no idea of words. Use PROPER for first-letter capitals, and read its page for what it does to names such as McDonald. |