Text functions

LOWER

Matches all 11 recorded answers

Recorded: 6 in the answer bank and 5 workbook cells. How we measure this · See the Rust code

Local names in 40 languages
LanguageName in Excel
ArabicLOWER
BulgarianLOWER
CzechLOWER
DanishLOWER
GermanLOWER
GreekLOWER
English (Australia)LOWER
English (United Kingdom)LOWER
English (United States)LOWER
SpanishLOWER
EstonianLOWER
FinnishPIENET
FrenchLOWER
HebrewLOWER
CroatianLOWER
HungarianLOWER
IndonesianLOWER
ItalianLOWER
JapaneseLOWER
KoreanLOWER
LithuanianLOWER
LatvianLOWER
NorwegianLOWER
DutchLOWER
PolishLOWER
Portuguese (Brazil)LOWER
Portuguese (Portugal)LOWER
RomanianLOWER
RussianLOWER
SlovakLOWER
SlovenianLOWER
Serbian (Latin)LOWER
SwedishLOWER
ThaiLOWER
TurkishKÜÇÜKHARF
UkrainianLOWER
VietnameseLOWER
Chinese (Simplified)LOWER
Chinese (Hong Kong)LOWER
Chinese (Traditional)LOWER

Names from Microsoft's support site.

What it does

LOWER(text)

LOWER returns its argument with every uppercase letter replaced by its lowercase form. Microsoft's article states both halves of that: it converts all uppercase letters in a text string to lowercase, and it "does not change characters in text that are not letters" — digits, spaces and punctuation pass through untouched.

The interesting part of the definition is what "its lowercase form" means once the text leaves ASCII. Case mapping in Unicode is not a per-character permutation:

  • Some characters lowercase to a different number of characters than they started with. İ (U+0130, Latin capital I with dot above) has a canonical lowercasing of two code points, i followed by a combining dot above.
  • Some lowercasings are context-dependent. Greek capital sigma Σ lowercases to final sigma ς at the end of a word and to medial sigma σ elsewhere — the same input character, two answers, chosen by what is next to it.
  • Some characters have no agreed lowercase at all, or acquired one late: capital sharp s ẞ (U+1E9E) is the standard example.

A worksheet function that must return one text value per input has to take a position on all three. Microsoft's article takes none of them explicitly, so the exact mapping Excel applies is documented only by example, and the examples are ASCII.

Arguments

text — required, described in the article as the text you want to convert to lowercase. It is a text argument, so numbers and logicals convert to text first; LOWER(TRUE) is the lowercasing of the string TRUE, not a logical.

There is no locale argument. That absence is load-bearing: the Turkish dotted/dotless-i pair is the canonical case in which correct lowercasing depends on the language of the text, and LOWER gives a formula no way to say which language it is in.

Try it

Input cells (optional)

Example: {"B2": 3, "B3": 4}. A1 holds the formula. Other cells need values before a formula can read them.

Enter a formula, then calculate.

Runs locally in your browser with OneCalc. Its answer may differ from Excel. Use English function names and commas between arguments.

Quirks

Result and edge cases

The return kind is Text. Empty text returns empty text.

Arrays, empty cells and omitted arguments follow the shared call model (chapter 03).

Errors

The article lists no error conditions, and the function has no domain to violate. The reachable errors are the shared ones: an error value arriving as the argument propagates, and a value kind with no text conversion surfaces #VALUE! under the shared coercion rules (chapter 02).

LOWER leaves letters above U+FFFF alone, and a combining mark stops the final sigma

LOWER did not change the Deseret capital U+10400, a cased letter above U+FFFF, either alone or inside other text: LOWER("A𐐀Σ") is "a𐐀ς", where the Greek capital sigma at the end becomes the final form. Greek sigma depends on what follows: followed by a full stop it takes the final form ς, and followed by a combining mark, U+0300 or U+0301, it takes the medial form σ. PROPER treats a character above U+FFFF as a word boundary, so PROPER("a𐐀b") is "A𐐀B", with the B capitalised and the Deseret letter unchanged.

Explanation (inferred): The readings cover one Deseret letter and two combining marks. That every letter above U+FFFF and every mark behave the same is inferred.

FormulaExcelMathematical value
LOWER(A1)
Excel 16.0.20527.20088, Windows 64-bit, AMD Ryzen 7 4800H, workbook compatibility version 2
Inputs and reference value

Number supplied through a cell.

text: 𐐀

𐐀—
LOWER(A1)
Excel 16.0.20527.20088, Windows 64-bit, AMD Ryzen 7 4800H, workbook compatibility version 2
Inputs and reference value

Number supplied through a cell.

text: A𐐀Σ

a𐐀ς—
LOWER(A1)
Excel 16.0.20527.20088, Windows 64-bit, AMD Ryzen 7 4800H, workbook compatibility version 2
Inputs and reference value

Number supplied through a cell.

text: ΑΣ̀

ασ̀—
LOWER(A1)
Excel 16.0.20527.20088, Windows 64-bit, AMD Ryzen 7 4800H, workbook compatibility version 2
Inputs and reference value

Number supplied through a cell.

text: ΑΣ.

ας.—
PROPER(A1)
Excel 16.0.20527.20088, Windows 64-bit, AMD Ryzen 7 4800H, workbook compatibility version 2
Inputs and reference value

Number supplied through a cell.

text: a𐐀b

A𐐀B—
PROPER(A1)
Excel 16.0.20527.20088, Windows 64-bit, AMD Ryzen 7 4800H, workbook compatibility version 2
Inputs and reference value

Number supplied through a cell.

text: aΣ́

Aσ́—

Inputs, build details and evidence

How to implement

Notes for implementers

  1. Choose and record a case-mapping table version. Unicode's case mappings change between versions. An implementation that delegates to a platform's to_lowercase inherits whichever version that platform shipped, which is not a stable target.
  2. Decide the expansion policy explicitly. If a mapping produces more than one character, does the function emit the expansion or leave the character unchanged? The two policies are visibly different on İ and on ẞ.
  3. Final sigma needs a neighbour test. Any implementation that maps character-by-character without lookahead will get Greek text wrong at word ends.

Rust code

Show the CalcFunc source of this function

Quoted from the public repository DnaCalc/DnaCalc, crates calc-func and calc-fml, at commit 9e1884369a67. Comments are the source's own. A kernel shared with other functions appears once, on its module page.

LOWER · 1 lines · calc-func/src/catalogue/text_functions.rs on GitHub
14 lower_fn "LOWER" (1, 1) [V "text"] |s, a, sv| { cased(s, a, k::lower) }

Kernels shared with other functions

Argument and result plumbing

No implementation has been published with a Handbook test suite for this function.

Version differences

No comparison between specific Excel builds is recorded here yet. This does not establish that all builds behave alike.

Excel 16.0.20527.20088

Windows 64-bit, AMD Ryzen 7 4800H, workbook compatibility version 2

LOWER(A1) returned 𐐀. LOWER(A1) returned a𐐀ς. 2 further recorded controls are attached. Inputs were supplied through cells using Value2. These are controls from this environment, not a same-input comparison with another build.

Observed formulas and results
  • LOWER(A1) → 𐐀 (cell-value2)
  • LOWER(A1) → a𐐀ς (cell-value2)
  • LOWER(A1) → ασ̀ (cell-value2)
  • LOWER(A1) → ας. (cell-value2)

Alternatives

Relationships

  • UPPER is the other direction, and is not its inverse: LOWER(UPPER(x)) is not always x, and neither is UPPER(LOWER(x)), because case mapping loses information (ß and SS) and gains context (final sigma).
  • PROPER capitalises the first letter of each word and lowercases the rest, and therefore contains a copy of both mappings.
  • EXACT is the function to reach for when the question is whether two strings differ only by case: EXACT(a,b) is case-sensitive, a=b is not. Writing LOWER(a)=LOWER(b) as a case-insensitive comparison is a common idiom and a subtly different predicate, because it also folds any character pair that shares a lowercase form.

Named variants

No named variants are recorded yet.

Suggest a correction or contribute an implementation · For agents