「名簿のメールアドレスを照合したら、同じ人なのに一致しない」。スプレッドシートで顧客リストや会員IDを管理していると、こんな場面に出くわしませんか。
原因として多いのが、大文字・小文字の表記ゆれです。「Tanaka@Example.com」と「tanaka@example.com」は、使う関数によって同じ扱いにも別物扱いにもなります。放っておくと、重複を見逃したまま集計しかねません。
この記事では、スプレッドシートのLOWER関数の使い方と、大文字小文字を区別する関数・しない関数の見分け方を紹介します。
対応バージョン: Googleスプレッドシート(ブラウザ版)を前提に解説しています。Excelとの違いは「よくある質問」の最後にまとめました。
スプレッドシートのLOWER関数の基本|小文字に変わるもの・変わらないもの
LOWER関数は、文字列に含まれる英字を小文字に変換する関数です。読み方は「ロウアー」。英語の lower case(小文字)が名前の由来になっています。
構文と基本の使い方
構文は次のとおりで、引数は1つだけです。
=LOWER(テキスト)
引数には、セル参照(=LOWER(A2))か、ダブルクォーテーションで囲んだ文字列(=LOWER("ORANGE JUICE"))を指定します。
| A列(入力) | B列(数式) | 結果 |
|---|---|---|
| HELLO WORLD | =LOWER(A2) | hello world |
| Google Sheets | =LOWER(A3) | google sheets |
| ABC-123 | =LOWER(A4) | abc-123 |
| 東京OFFICE | =LOWER(A5) | 東京office |
英字だけが小文字になり、数字やハイフン、日本語はそのまま残ります。元のA列は書き換わらず、結果がB列に表示されるだけ。
日本語・数字・全角英字・日付を渡したときの結果
数値や日付、全角英字を渡したときの扱いは、公式ヘルプに書かれていません。実務で混ざりやすい値の結果を整理しておきましょう。
| 入力 | =LOWER() の結果 | 注意点 |
|---|---|---|
| 123(数値) | 123 | 文字列になる |
| 2026/1/1(日付) | 2026/01/01 | 日付ではなく文字列になる |
| TRUE(真偽値) | true | 文字列になる |
| 空白セル | 空(空文字列) | エラーにはならない |
| #N/A | #N/A | エラーがそのまま返る |
| ABC(全角英字) | abc | 全角のまま小文字になる |
| ΑΒΓ(ギリシャ文字) | αβγ | 英字以外も小文字になる |
特に気をつけたいのが日付です。LOWERは結果を文字列で返すため、日付が「2026/01/01」のような文字列に変わり、日付として扱えなくなります。全角英字を半角にそろえたいなら、次の章のASC関数を組み合わせましょう。
LOWER関数で表記ゆれをそろえる実務パターン|メール・ID・URL
メールアドレスや会員ID、商品コードは、入力する人やシステムによって大文字小文字がばらつきます。手入力とCSVの取り込みが混ざると、なおさらです。コピペで使える正規化の式を用途別に見ていきましょう。
なお、メールアドレスの@より前は、仕組みのうえでは大文字小文字が区別されることがあります。照合用の小文字列は別に作り、送信に使う元データは残しておくと安心です。
TRIMと組み合わせたコピペ用の正規化式
コピペで取り込んだデータには、前後に余分なスペースが紛れ込みがちです。LOWERとTRIM関数を組み合わせれば、小文字化と空白の除去が1つの式で済みます。
=LOWER(TRIM(A2))
| A列(入力) | B列(=LOWER(TRIM(A2))) |
|---|---|
| Tanaka@Example.com(前後に半角スペース) | tanaka@example.com |
| SATO@EXAMPLE.COM | sato@example.com |
| Suzuki@Example.com(末尾に全角スペース) | suzuki@example.com(全角スペースが残る) |
ただし、TRIMが取り除くのは半角スペースだけ。全角スペースや、Webページ由来のノーブレークスペース(NBSP)は残ります。全角スペースは、SUBSTITUTEで半角に置き換えてからTRIMにかけましょう。
=LOWER(TRIM(SUBSTITUTE(A2," "," ")))
2つ目の引数が全角スペースです。NBSPはこの式でも残るため、Webからコピーしたデータが合わないときは疑ってみてください。
全角英字(ABC)を半角にそろえるなら、全角の英数字やカタカナを半角に変換するASC関数を使います。
=LOWER(TRIM(ASC(A2)))
ASCはカタカナも半角にしてしまうため、氏名や商品名の列にはかけないでください。メールアドレスやIDの列に限って使うのがコツです。
URL・slug向けにSUBSTITUTEも組み合わせる
ブログのslugやURLに使う識別子を作るときは、スペースをハイフンに置き換えます。SUBSTITUTE関数をTRIMの外側に足しましょう。
=LOWER(SUBSTITUTE(TRIM(A2)," ","-"))
TRIMで空白を整え、SUBSTITUTEでハイフンに変え、最後にLOWERで小文字にする流れです。
| A列(入力) | 結果 |
|---|---|
| Spring Sale 2026 | spring-sale-2026 |
| New Product Launch(単語間に2つずつ・前後にもスペース) | new-product-launch |
ただし、URL全体にLOWERをかけるのは避けましょう。ドメインより後ろのパスは大文字小文字を区別するサーバーもあり、「/Page」と「/page」が別ページになることがあります。
記号の除去など複雑な正規化なら、REGEXREPLACE関数の出番です。
列全体にまとめて適用する(ARRAYFORMULA)
何百行もあるリストなら、1つの式で列全体を変換できます。B2セルに次の式を入れるだけ。
=ARRAYFORMULA(IF(A2:A="","",LOWER(TRIM(A2:A))))
IFで「A列が空なら空にする」条件を入れた形です。ただし、IFなしの =ARRAYFORMULA(LOWER(A2:A)) でも、空の行は空文字列で返ります。どちらの形でも、COUNTAは空文字列まで数えてしまうため、B列の入力済みの件数を数えたいときは =COUNTIF(B2:B,"?*") を使いましょう。
結果は下の行へ自動で展開されます。B列の途中に手入力すると数式が #REF! エラーになるので、展開先は空けておきましょう。仕組みの詳細はARRAYFORMULA関数の記事で解説しています。
UPPER・PROPERとの違い
大文字小文字を変える関数は、LOWERのほかにUPPERとPROPERの2つ。
| 関数 | 変換の内容 | 例(hello World) | 向いているデータ |
|---|---|---|---|
| LOWER | すべて小文字 | hello world | メール・URL・slug |
| UPPER | すべて大文字 | HELLO WORLD | 商品コード・国コード |
| PROPER | 単語の先頭だけ大文字 | Hello World | 英語の人名・地名 |
コード類を大文字でそろえるならUPPER関数を使います。3関数の詳しい比較はPROPER関数の記事にまとめました。
照合・重複チェックで大文字小文字が効く関数・効かない関数
ここがこの記事の本題です。LOWERは、どの関数の前にも挟めばいいわけではありません。大文字小文字を区別しない関数なら、LOWERを挟んでも結果は変わらないからです。
大文字小文字を区別する関数・しない関数の一覧
「Tanaka@Example.com」と「tanaka@example.com」を同じとみなすかどうか。主な関数を並べると次のとおりです。
| 関数 | 大文字小文字 | LOWERは要るか |
|---|---|---|
| EXACT | 区別する | 要る |
| FIND | 区別する | 要る |
| QUERY(WHERE句) | 区別する | 要る(クエリ内で lower() を使う) |
| SUBSTITUTE | 区別する | 要る |
| REGEXMATCH | 区別する((?i) を付けると区別しない) | 要る(または (?i)) |
| UNIQUE / COUNTUNIQUE | 区別する | 要る |
| SEARCH | 区別しない | 不要 |
| COUNTIF | 区別しない | 不要 |
= 比較 | 区別しない | 不要 |
| VLOOKUP / MATCH / XLOOKUP | 区別しない | 不要 |
このうち、EXACT・FIND・QUERYは「区別する」、SEARCH・COUNTIFは「区別しない」と公式の資料に書かれています。ほかの関数は、公式ヘルプに大文字小文字の扱いが書かれていないため、表の内容はスプレッドシート上で実際に試した結果です。
「区別する」側の代表がEXACT関数です。A2に「Tanaka@Example.com」、B2に「tanaka@example.com」が入っているとしましょう。
=EXACT(A2,B2)
→ FALSE
=EXACT(LOWER(A2),LOWER(B2))
→ TRUE
両方を小文字にしてから比べれば、同じ値と判定されます。FINDも同様で、大文字が混ざった文字列から小文字の語を探すと見つかりません。
=FIND("example",A2)
→ エラー(見つからない)
=FIND("example",LOWER(A2))
→ 8
=SEARCH("example",A2)
→ 8
「Tanaka@」の7文字の次なので、位置は8です。SEARCHは最初から区別しないため、LOWERなしで同じ結果が返ります。
QUERYで絞り込むなら、クエリ文の中で lower() を使いましょう。WHERE句の contains などは大文字小文字を区別するためです。
=QUERY(A1:A6,"select A where lower(A) contains 'tanaka'",1)
COUNTIFの重複チェックはLOWERなしでいい|見逃すのは空白
重複チェックの定番はCOUNTIFですが、もともと大文字小文字を区別しません。LOWERを挟まなくても「Tanaka」と「tanaka」は同じものとして数えられます。
では、重複を見逃す原因は何か。次の表では、A4だけ末尾に半角スペースが入っています。
| 行 | A列(メール) | =COUNTIF($A$2:$A$6,A2) |
|---|---|---|
| 2 | Tanaka@Example.com | 2 |
| 3 | tanaka@example.com | 2 |
| 4 | sato@example.com(末尾にスペース) | 1 |
| 5 | SATO@EXAMPLE.COM | 1 |
| 6 | suzuki@example.com | 1 |
田中さんの2行は、大文字小文字が違っても2件と数えられています。一方で佐藤さんの2行は、スペース1つの差で別物扱い。見逃しの原因は大文字小文字ではなく、空白のほうでした。
対策は、正規化した補助列を作ってから数えることです。C列で整え、D列で重複を数えます。
C2: =LOWER(TRIM(A2))
D2: =COUNTIF($C$2:$C$6,C2)
これで5行の結果は上から2・2・2・2・1になり、佐藤さんの重複も拾えます。COUNTIFだけならTRIMでも足りますが、LOWERも入れておくとUNIQUEやEXACTでも同じ列を使い回せるのが利点です。
重複している行に色を付けたいときは、条件付き書式のカスタム数式に =COUNTIF($C$2:$C,C2)>1 を指定する方法もあります。
ユニークな件数を数えるなら、正規化列にUNIQUEをかけましょう。元のA列のままだと、大文字小文字や空白の違いで5件に増えるおそれがあります。
=COUNTA(UNIQUE(C2:C6))
→ 3
メニューにある重複削除の機能を使う前にも、正規化列を作っておくと判定がぶれにくくなります。
LOWERを挟むかどうかの判断基準
最後に、判断の目安を3つにまとめます。
- 区別する関数を使う(EXACT・FIND・QUERY・UNIQUEなど): LOWERを挟む
- 区別しない関数を使う(COUNTIF・SEARCHなど): LOWERは不要。空白や全角の混入を先に疑う
- 同じデータを複数の関数で使う: 正規化列を1本作り、すべてそこを参照する
迷ったら3つ目の正規化列がおすすめ。どの関数でも同じ前提で判定できます。
LOWER関数のよくある質問・つまずき
実務でつまずきやすい4つの場面をまとめました。
元データを上書きしたい(値貼り付け)
LOWERの結果は数式です。元の列を小文字に置き換えたいなら、B列をコピーし、A列に「値のみ貼り付け」をします。ショートカットはCtrl+Shift+V(Macは⌘+Shift+V)です。上書きが済んだら、B列の数式は消してOK。
数式が残って並べ替え・コピーで崩れる
B列が数式のままだと、参照元のA列を削除したときにエラーになります。別のシートへコピーした場合も、貼り付け先で参照がずれることがあります。
並べ替えや列の削除をする前に、正規化列は値に固定しておきましょう。「作ったら値にする」と覚えておくと、事故がぐっと減りますよ。
数値・日付が文字列になる
日付の列にかけると「2026/01/01」のような文字列になり、日付として扱えなくなります。
数字だけのIDも、見た目は同じまま文字列に変わります。数値で入っている別の列と照合すると、一致しない場合があるので注意してください。 英字を含まない列には、そもそもLOWERをかけないのが一番です。
Excelとの違い
LOWER関数そのものは、Excelでも同じ構文で使えます。ただし、この記事で紹介したARRAYFORMULAはExcelにはありません。Microsoft 365のExcelなら、範囲を渡すだけで結果が下へ広がる仕組み(動的配列)で代わりになります。
大文字小文字の扱いも関数ごとにExcelと同じとは限らないため、一覧表をそのまま当てはめないでください。Excelで作業する方は、ExcelのLOWER関数の使い方をどうぞ。
まとめ|スプレッドシートのLOWER関数は「区別する関数」の前で使う
スプレッドシートのLOWER関数は、英字を小文字にそろえるシンプルな関数です。本当に役立つのは、大文字小文字を区別する関数と組み合わせたとき。ポイントを振り返りましょう。
- 構文は
=LOWER(テキスト)で、引数は1つだけ - 結果は文字列。日付や数値の列にはかけない
- 正規化の基本形は
=LOWER(TRIM(A2))。全角スペースはSUBSTITUTE、全角英字はASCで補う - slug作りは
=LOWER(SUBSTITUTE(TRIM(A2)," ","-"))。URLのパスまで小文字にしない - EXACT・FIND・QUERYは区別するので、LOWERを挟む
- COUNTIF・SEARCHは区別しないので、LOWERは不要。重複の見逃しは空白を疑う
- 正規化列は値に固定してから使う
照合が合わないときは、まず「その関数は大文字小文字を区別するか」を一覧表で確かめてみてください。空白の処理はTRIM関数、細かい置き換えはSUBSTITUTE関数の記事も参考になります。
