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
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.
Formula
Excel
Mathematical value
LOWER(A1) Excel 16.0.20527.20088, Windows 64-bit, AMD Ryzen 7 4800H, workbook compatibility version 2Inputs 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 2Inputs 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 2Inputs 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 2Inputs 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 2Inputs 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 2Inputs and reference value
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.
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 ẞ.
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.
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.