Available in:All versions (Works in Excel 2007, every later version, Microsoft 365 and Excel for the web)Examples need Excel for Microsoft 365Category:Text

PROPER

BEGINLETTERS in Dutch Excel

Capitalizes the first letter of a text and every letter that follows a non-letter, and lowercases all other letters.

Difficulty rating 1 of 5. One argument and no options; the lesson is what its rule does to names, because it capitalizes after every character that is not a letter and lowercases the rest.

Last updated: 13 October 2026

See the worked examples

Sheet excerpt: D2 holds the formula
RowABCD
1RelationName in debtor listBalance 31 Dec 2025Readable name
2D1001JANSEN BOUWMATERIALEN€18,450.00€ 18.450,00Jansen Bouwmaterialen=PROPER(B2)=PROPER(B2)
3D1002DE GROOT TRANSPORT€7,320.50€ 7.320,50
4D1003BRINKMAN INSTALLATIE BV€22,980.75€ 22.980,75
5D1004KUIPERS-HOEKSTRA ADVIES€3,150.00€ 3.150,00
6D1005BAKKERIJ VAN DIJK€9,640.25€ 9.640,25
Formula cell (D2)Input

Result: Jansen Bouwmaterialen

=PROPER(B2)
=PROPER(B2)

What PROPER does and when to use it

What it does: it gives every word in a text a capital first letter and lowercase letters after it, for example MEUBELFABRIEK JANSEN becomes Meubelfabriek Jansen.

When to use it: for product names, street names, job titles and headings that arrived in capitals or in lowercase. On personal names it is a first pass only: it turns McDonald into Mcdonald and capitalizes prefixes such as van der. It follows one mechanical rule and knows nothing about names.

How Excel evaluates it

Excel reads the text and walks through it one character at a time, remembering only whether the previous character was a letter:

  • a letter that comes first, or right after a non-letter, is written in uppercase
  • any other letter is written in lowercase
  • a non-letter is copied unchanged and resets the memory

So in o'neill the apostrophe is a non-letter, which is why the n after it becomes N; in mcdonald there is no non-letter anywhere, so only the m is capitalized. Digits count as non-letters too: 3rd becomes 3Rd. The result is text, and the source cell is not changed.

Watch out: PROPER lowercases everything after the first letter of each word, so abbreviations, legal forms and codes lose their capitals (BV becomes Bv, XT-200 becomes Xt-200). Do not run it over columns with codes or acronyms.

Mental model

A typist who presses Shift after every space, hyphen, digit or apostrophe, and never anywhere else.

Terms used on this page: cell

PROPER(text)
PROPER(text)
Arguments
ArgumentTypeMeaning
textRequiredThe text to recapitalize; a cell reference or text in quotes.

Return value:Text: every word starting with a capital letter

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

Make debtor names from the aging list readable

The client's receivables aging list (ouderdomsanalyse debiteuren) was exported with every customer name in capitals. For your working paper on the debtor confirmations you want readable names next to the balances. You add a column that recapitalizes each name, and you read through the result once before you paste it into the working paper.

Sheet excerpt: D2 holds the formula
RowABCDE
1RelationName in debtor listBalance 31 Dec 2025Readable name
2D1001JANSEN BOUWMATERIALEN€18,450.00€ 18.450,00Jansen Bouwmaterialen=PROPER(B2)=PROPER(B2)
3D1002DE GROOT TRANSPORT€7,320.50€ 7.320,50
4D1003BRINKMAN INSTALLATIE BV€22,980.75€ 22.980,75
5D1004KUIPERS-HOEKSTRA ADVIES€3,150.00€ 3.150,00
6D1005BAKKERIJ VAN DIJK€9,640.25€ 9.640,25
7
Formula cell (D2)Input

Formula in D2

=PROPER(B2)
=PROPER(B2)

Result: Jansen Bouwmaterialen

Step by step
  1. Excel reads B2 and finds JANSEN BOUWMATERIALEN, 21 characters.
  2. The first character, J, is a letter at the start, so it stays uppercase. A, N, S, E, N follow a letter, so each becomes lowercase: Jansen.
  3. The space is not a letter and is copied unchanged. B comes right after it, so B stays uppercase; the other 13 letters, OUWMATERIALEN, follow letters and become lowercase: Bouwmaterialen.
  4. D2 shows Jansen Bouwmaterialen. B2 itself is not changed.
  5. Copy D2 down. Row 5 becomes Kuipers-Hoekstra Advies: the hyphen is a non-letter, so the H after it gets a capital. Row 4 becomes Brinkman Installatie Bv: the B of BV stays, the V is lowercased, and the abbreviation is damaged.

Watch out: Brinkman Installatie BV comes back as Brinkman Installatie Bv. Legal forms and other abbreviations lose their capitals, and you cannot tell PROPER which words to skip.

More on this example: why it works, 1 more pitfall, 1 variation

Why it works

Company names are made of words separated by spaces and hyphens, which is the case the rule handles well: every word starts after a non-letter, so every word gets one capital and the rest lowercase. Legal forms such as BV and NV are the exception, which is why you still read the column once before it goes into the working paper.

More to watch out for

  • The new column is text. Match it against the ledger by the relation code in column A, never by the recapitalized name.

Variations

=PROPER(B2:B6)
=PROPER(B2:B6)

In Excel 2021 or Microsoft 365 one formula in D2 spills all five names; nothing to copy down.

Intermediate

Clean journal descriptions exported from the XAF auditfile

In the journal lines of the XAF auditfile the descriptions were typed by several people: some in capitals, some in lowercase, with leading, trailing and double spaces. For your journal entry testing you want one clean line per entry that reads the same way everywhere. PROPER does the capitals, TRIM removes the spaces first, and you check the effect on codes such as BTW and Q3 before you use the column.

Sheet excerpt: D2 holds the formula
RowABCDE
1Entry no.JournalDescription as exportedClean description
225-0412INKPURCHASE INVOICEBRINKMAN INSTALLATIE 25-0412Purchase Invoice Brinkman Installatie 25-0412=PROPER(TRIM(C2))=PROPER(TRIM(C2))
325-0413BNKBANK RECEIPT DE GROOT TRANSPORT
425-0414MEMVAT RETURN Q3
525-0415VRKsales invoicejansen bouwmaterialen
6
Formula cell (D2)InputMarks: extra spaceNote: C2 has two spaces at the start, two between the first and second part, and one at the end. C5 has two spaces in the middle.

Formula in D2

=PROPER(TRIM(C2))
=PROPER(TRIM(C2))

Result: Purchase Invoice Brinkman Installatie 25-0412

Step by step
  1. Excel evaluates TRIM first. C2 holds 49 characters: two leading spaces, a double space after INVOICE and one trailing space. TRIM removes the edge spaces and reduces the double space to one, so it returns 45 characters: PURCHASE INVOICE BRINKMAN INSTALLATIE 25-0412.
  2. PROPER starts at P, the first character, which stays uppercase; URCHASE follows letters and becomes lowercase: Purchase.
  3. The space is copied. I follows it and stays uppercase, NVOICE becomes lowercase: Invoice. The same happens to B in BRINKMAN (Brinkman) and I in INSTALLATIE (Installatie).
  4. 25-0412 contains only digits and a hyphen. They are not letters, so they are copied unchanged. D2 shows Purchase Invoice Brinkman Installatie 25-0412.
  5. Copy D2 down:

    • D3 gives Bank Receipt De Groot Transport (the Dutch tussenvoegsel De keeps a capital)
    • D4 gives Vat Return Q3: the Q after the space stays uppercase and the 3 is copied
    • D5 gives Sales Invoice Jansen Bouwmaterialen: TRIM removed the double space and PROPER capitalized the lowercase text

Watch out: Do not run PROPER over the journal column or any other code column: INK, MEM and VRK would become Ink, Mem and Vrk, and a filter or lookup on the real codes would no longer find them.

More on this example: why it works, 1 more pitfall, 1 variation

Why it works

TRIM runs first so that PROPER sees single spaces; without it, D2 would keep its leading spaces and the double space, because PROPER copies non-letters as they are. The hyphen and the digits count as non-letters, which is why the entry number stays intact. PROPER has no list of exceptions: in D4 the abbreviation VAT becomes Vat, which is the cost of a rule that never looks at the word itself.

More to watch out for

  • The clean description is text derived from the original. Keep column C untouched as evidence and work from column D, or you cannot show the auditfile line as received.

Variations

=PROPER(TRIM(C2:C5))
=PROPER(TRIM(C2:C5))

In Excel 2021 or Microsoft 365 one formula in D2 cleans all four descriptions and spills; nothing to copy down.

Advanced

Capitalize only the first letter of a manual entry description

For journal entry testing you pulled the manual MEM entries from the auditfile. The descriptions were typed in capitals or in lowercase, and for the working paper they must read like sentences: first letter uppercase, the rest lowercase.

PROPER is the wrong tool, because it would capitalize every word. You build the sentence case yourself from UPPER, LOWER, LEFT and MID, and PROPER appears in the variations as the function you deliberately do not use.

Sheet excerpt: D2 holds the formula
RowABCDE
1Entry no.Description as typedAmountDescription for working paper
225-0871MANUAL CORRECTION HOLIDAY PAY€15,000.00€ 15.000,00Manual correction holiday pay=UPPER(LEFT(B2, 1)) & LOWER(MID(B2, 2, LEN(B2)))=UPPER(LEFT(B2; 1)) & LOWER(MID(B2; 2; LEN(B2)))
325-0872reversal of rent accrual€4,250.75€ 4.250,75
425-0873ADJUSTMENT AT CLIENT REQUEST€20,000.00€ 20.000,00
5
Formula cell (D2)Input

Formula in D2

=UPPER(LEFT(B2, 1)) & LOWER(MID(B2, 2, LEN(B2)))
=UPPER(LEFT(B2; 1)) & LOWER(MID(B2; 2; LEN(B2)))

Result: Manual correction holiday pay

Step by step
  1. Excel evaluates the left half first. LEFT(B2, 1) takes the first character of MANUAL CORRECTION HOLIDAY PAY: M. UPPER(M) is M; it was already a capital.
  2. Then the right half, inside out. LEN(B2) is 6 + 1 + 10 + 1 + 7 + 1 + 3 = 29. MID(B2, 2, 29) starts at the second character and asks for 29 characters; only 28 remain, and MID returns all of them: ANUAL CORRECTION HOLIDAY PAY.
  3. LOWER turns that into anual correction holiday pay.
  4. The & joins the two halves: M and anual correction holiday pay give Manual correction holiday pay. That is D2.
  5. Copy down. Row 3, which was already lowercase, becomes Reversal of rent accrual: only the r changed. Row 4 becomes Adjustment at client request.
  6. PROPER on the same cell would give Manual Correction Holiday Pay: every word capitalized, which is not how a sentence reads.

Watch out: Names inside the description are lowercased too: CORRECTION BRINKMAN INSTALLATIE becomes Correction brinkman installatie. The formula returns a plausible sentence and never flags it.

More on this example: why it works, 1 more pitfall, 2 variations

Why it works

Sentence case is two different treatments for two parts of the text, so the formula splits the text at position 1 and treats each part on its own. Asking MID for LEN(B2) characters is a deliberate over-ask: MID never errors when fewer remain, and it saves a LEN(B2) - 1 that people often get wrong by one. PROPER cannot be coaxed into this, because its rule fires on every space.

More to watch out for

  • A description that starts with a space gives a space followed by lowercase text. Wrap B2 in TRIM if the auditfile has stray spaces.

Variations

=PROPER(B2)
=PROPER(B2)

Title case instead of sentence case: Manual Correction Holiday Pay. Right for headings, wrong for sentences.

=REPLACE(LOWER(B2), 1, 1, UPPER(LEFT(B2, 1)))
=REPLACE(LOWER(B2); 1; 1; UPPER(LEFT(B2; 1)))

Same result with REPLACE: lowercase everything, then overwrite position 1 with the uppercase first letter. Shorter, and no MID arithmetic.

MasterExcel for Microsoft 365 (This example needs Excel for Microsoft 365)

PROPER plus an exceptions table, in LET

You send debtor confirmations for 400 customers from the client's aging list, and the names in the export are in capitals or lowercase. PROPER handles the bulk, but tussenvoegsels, the word en and legal forms such as BV come out wrong every time, and one nested SUBSTITUTE per exception makes the formula unreadable after three. You keep the exceptions in a small two-column table and apply them all in a REDUCE loop, so a new exception means a new row, not an edit of the formula.

Sheet excerpt: E2 holds the formula
RowABCDEF
1Name as exportedWrongRightName for the letter
2BOUWBEDRIJF VAN DER BERGVan Dervan derBouwbedrijf van der Berg=LET( base, PROPER(TRIM(A2)), padded, " " & base & " ", fixed, REDUCE(padded, SEQUENCE(ROWS($B$2:$B$6)), LAMBDA(acc, i, SUBSTITUTE(acc, INDEX($B$2:$B$6, i), INDEX($C$2:$C$6, i)))), TRIM(fixed) )=LET( base; PROPER(TRIM(A2)); padded; " " & base & " "; fixed; REDUCE(padded; SEQUENCE(ROWS($B$2:$B$6)); LAMBDA(acc; i; SUBSTITUTE(acc; INDEX($B$2:$B$6; i); INDEX($C$2:$C$6; i)))); TRIM(fixed) )
3dakdekkers de vries en zonenVanvan
4KAVELMOOR TRANSPORT BVDede
5SCHILDERBEDRIJF VAN DIJKEnen
6HOEKSTRA EN DE BRUIN BVBvBV
7
Formula cell (E2)InputMarks: extra spaceNote: Columns B and C are the exceptions table: each Wrong value has a space before and after so that only whole words match. Van Der is listed before Van on purpose.

Formula in E2

=LET(
  base, PROPER(TRIM(A2)),
  padded, " " & base & " ",
  fixed, REDUCE(padded, SEQUENCE(ROWS($B$2:$B$6)), LAMBDA(acc, i, SUBSTITUTE(acc, INDEX($B$2:$B$6, i), INDEX($C$2:$C$6, i)))),
  TRIM(fixed)
)
=LET(
  base; PROPER(TRIM(A2));
  padded; " " & base & " ";
  fixed; REDUCE(padded; SEQUENCE(ROWS($B$2:$B$6)); LAMBDA(acc; i; SUBSTITUTE(acc; INDEX($B$2:$B$6; i); INDEX($C$2:$C$6; i))));
  TRIM(fixed)
)

Result: Bouwbedrijf van der Berg

Step by step
  1. base: TRIM(A2) leaves BOUWBEDRIJF VAN DER BERG unchanged, and PROPER turns it into Bouwbedrijf Van Der Berg. Every word gets a capital, including the two that should not.
  2. padded adds a space at both ends, so a word at the very start or end of a name is still surrounded by spaces and can match the table: " Bouwbedrijf Van Der Berg ".
  3. ROWS($B$2:$B$6) is 5, so SEQUENCE returns 1 to 5. REDUCE starts with padded as the accumulator and runs the LAMBDA once per number. Each pass replaces the i-th Wrong value with the i-th Right value in the text the previous pass produced.
  4. Pass 1, i = 1: SUBSTITUTE looks for " Van Der " and finds it: the text becomes " Bouwbedrijf van der Berg ". Pass 2 looks for " Van ", pass 3 for " De ", pass 4 for " En ", pass 5 for " Bv ": none occurs, so the accumulator stays the same.
  5. TRIM removes the two padding spaces. E2 shows Bouwbedrijf van der Berg.
  6. The order of the table matters: Van Der is listed before Van. If Van came first, pass 1 would turn Van Der into van Der, and Der would never be fixed. Longest exception first is the rule.
  7. Copied down with the table references fixed:

    • E3 gives Dakdekkers de Vries en Zonen (passes 3 and 4)
    • E4 gives Kavelmoor Transport BV (pass 5)
    • E5 gives Schilderbedrijf van Dijk (pass 2)
    • E6 gives Hoekstra en de Bruin BV (passes 3, 4 and 5)

Watch out: The mirror image, applying the exceptions before PROPER, looks the same and does nothing: PROPER runs last and recapitalizes every de and van back to De and Van. The fixes must come after PROPER.

More on this example: why it works, 2 more pitfalls, 2 variations

Why it works

PROPER is used for what it is good at, the bulk, and its known failures are corrected afterwards from data rather than from code. REDUCE threads one text through a list of replacements, which is what nested SUBSTITUTE calls do, but the list lives in cells where anyone can extend it, and ROWS($B$2:$B$6) makes the loop follow the table.

Do not use this construction for a one-off list of fifty names: read them and fix by hand, it is faster and safer. The alternative for very large lists is a Power Query transform with a merge against the same exceptions table; it handles millions of rows but refreshes on demand instead of live.

More to watch out for

  • Forget the padding spaces and the exceptions match inside words: a Wrong value of De without spaces turns Dekker into dekker.
  • A name that starts with a tussenvoegsel, such as Van Dijk Installatie, comes back as van Dijk Installatie, because the padding makes the first word match too. Check the first word of each name by eye, or add the exceptions only for words in the middle.

Variations

=SUBSTITUTE(SUBSTITUTE(" " & PROPER(TRIM(A2)) & " ", " Van Der ", " van der "), " De ", " de ")
=SUBSTITUTE(SUBSTITUTE(" " & PROPER(TRIM(A2)) & " "; " Van Der "; " van der "); " De "; " de ")

The nested version for two or three exceptions (wrap it in TRIM to drop the padding). Readable up to three; after that, use the table.

=PROPER(TRIM(A2))
=PROPER(TRIM(A2))

The baseline without the table: Bouwbedrijf Van Der Berg. This is what the exceptions table corrects.

Common mistakes

Common mistakes
SymptomCauseFix
Van Der Berg, Mcdonald and IphoneA list of names came back with Van Der Berg, Mcdonald and Iphone, and someone has to correct them by hand.That is PROPER working as designed. Keep the original column, apply PROPER, then fix known exceptions with SUBSTITUTE or an exceptions table; do not paste over the source.
IT became It, BV became BvAbbreviations lost their capitals: IT became It, Kavelmoor BV became Kavelmoor Bv, and a product code XT-200 became Xt-200.Leave columns with codes or acronyms out of it, or use UPPER for those columns.
Dates turned into numbers like 46113You applied PROPER to a column of dates and they turned into numbers such as 46113.A date is a number, and PROPER converts it to text. Leave date columns alone; use TEXT if you need a month name, and wrap it in PROPER if you need the capital (in Dutch Excel TEXT gives lowercase month names such as "maart").