英語の顧客名簿や住所録をスプレッドシートで管理していませんか?「john smith」と「JOHN SMITH」が同じ列に混ざっている、なんてことはよくあります。CSVで取り込んだデータや手入力のデータほど、表記はバラバラになりがちです。
数百件を1件ずつ打ち直すのは現実的ではありません。しかも PROPER 関数で整えたつもりが、「2nd」が「2Nd」、「it’s」が「It’S」に化けることも。気づかずに送付状へ流し込むと、かえって目立ってしまいます。
この記事では、スプレッドシートの PROPER 関数の構文と変換結果を最初に示します。そのあと、崩れる3パターンの直し方と、列全体を一括で変換する書き方まで順に見ていきましょう。PROPER の変換結果は、Google スプレッドシートに実際に入力して確かめた値です。
対応バージョン: Googleスプレッドシート(ブラウザ版)を前提に解説しています。後半で使う MAP・REDUCE・LAMBDA・XLOOKUP もスプレッドシートで動きます。Excel の PROPER との違いは「よくある質問」で触れます。
スプレッドシートのPROPER関数とは?構文と変換結果をまず確認
構文と変換結果(john smith/JOHN SMITH/jOHN sMITH → John Smith)
結論から。A2 の英字を「単語の頭だけ大文字、残りは小文字」にするなら、B2 に次の式を入れます。
=PROPER(A2)
| A列(入力) | B列(=PROPER(A2) の結果) |
|---|---|
| john smith | John Smith |
| JOHN SMITH | John Smith |
| jOHN sMITH | John Smith |
全部小文字でも、全部大文字でも、大小がちぐはぐでも、結果は同じ「John Smith」にそろいます。先頭以外は強制的に小文字になるのが、PROPER の大事な性質です。
| 引数 | 必須 | 説明 |
|---|---|---|
| テキスト | 必須 | 変換したい文字列、またはセル参照。文字列を直接書くときは “john smith” のようにダブルクォーテーションで囲む |
読み方は「プロパー」で、英語の proper(正式な・適切な)が由来です。Google の公式ヘルプでは、人名や地名のような固有名詞を整える用途が想定されています。
一方、「文の先頭だけ大文字」にする用途には向かないとも書かれています。代わりの式は、後半の「文頭だけ大文字にしたいとき」で紹介しますね。
UPPER・LOWERとの違い(3関数の比較表)
スプレッドシートで大文字・小文字をそろえる関数は、PROPER のほかに UPPER と LOWER があります。どれも引数は1つで、違いは「どこを大文字にするか」だけ。
| 関数 | 変換のしかた | jOHN sMITH の結果 | 向いているデータ |
|---|---|---|---|
| UPPER | すべて大文字 | JOHN SMITH | 国コード・商品コード |
| LOWER | すべて小文字 | john smith | メールアドレス・ID |
| PROPER | 各単語の頭だけ大文字 | John Smith | 英語の人名・地名・住所 |
全部大文字にそろえたいならUPPER関数、全部小文字ならLOWER関数の出番です。人名や地名のように「頭だけ大文字」が自然な表記には PROPER、と覚えておけば迷いません。
実務で使う変換パターン
実務のデータには、余分な空白や区切り文字が混ざっていることが多いもの。ここでは、よく組み合わせる4つの形を紹介します。
英語の人名・住所をそろえる
名簿のA列に英語の名前が入っているなら、B2 に =PROPER(A2) を入れて下へコピーするだけで整います。
| A列(入力) | B列(結果) |
|---|---|
| john smith | John Smith |
| JANE DOE | Jane Doe |
| bob o’neil | Bob O’Neil |
| mary-jane | Mary-Jane |
「o’neil」の N や「mary-jane」の J のように、アポストロフィやハイフンの後ろも大文字になります。複合姓やハイフンつきの名前は、そのまま使える形に整うので便利です。
姓と名を別々の列で管理したい場合は、先にSPLIT関数でスペースを区切りに分けておきましょう。分けた列それぞれに PROPER をかければ、並べ替えや差し込みにも使いやすくなります。
TRIMと組み合わせて余分な空白も消す
前後や単語の間に余計なスペースが入ったデータには、TRIM関数を内側に入れます。
=PROPER(TRIM(A2))
A2 が「␣␣john␣␣␣smith␣」(前に2つ、間に3つ、後ろに1つの空白)だったとします。このときの結果は「John Smith」でした。LEN で数えると10文字で、連続した空白は1つに、前後の空白は消えています。
CSV から取り込んだデータには、改行や目に見えない制御文字が紛れ込むこともあります。その場合はCLEAN関数をさらに内側に足して、=PROPER(TRIM(CLEAN(A2))) の形にしてください。内側から順に処理されるので、「制御文字を消す → 空白を整える → 頭を大文字に」の流れになります。
SUBSTITUTEでハイフン・アンダースコア区切りを整える
システムから出力した項目名には、「first_name」のようにアンダースコアでつないだものがあります。SUBSTITUTE関数でアンダースコアをスペースに置き換えてから、PROPER をかけましょう。
=PROPER(SUBSTITUTE(A2,"_"," "))
A2 が「first_name」なら、結果は「First Name」です。
ハイフンは置き換えなくても区切りになります(e-mail → E-Mail)。スペースに変えたいときだけ、上の式の “_” を “-” に替えてください。
文頭だけ大文字にしたいとき(UPPER+LEFT+LOWER+MID)
「hello world」を「Hello world」のように、文の最初の1文字だけ大文字にしたい場面もありますよね。PROPER は単語ごとに頭を大文字にするので、この用途には使えません。4つの関数を組み合わせて作ります。
=UPPER(LEFT(A2))&LOWER(MID(A2,2,LEN(A2)))
LEFT(A2)で1文字目を取り出し、UPPER で大文字にするMID(A2,2,LEN(A2))で2文字目以降を取り出し、LOWER で小文字にする&で2つをつなぐ
A2 が「hELLO WORLD」なら、結果は「Hello world」になります。2文字目以降はすべて小文字になるため、文中の固有名詞(Tokyo など)も小文字に変わる点に気をつけてください。
思いどおりにならない動作と直し方
PROPER は英語の表記ルールを知っているわけではありません。決まった規則で機械的に大文字・小文字を決めているため、文字の並び方によっては意図しない結果になります。
実機で確かめた変換結果の一覧(入力/結果/原因)
スプレッドシートに実際に入力した結果です。
| 入力 | PROPER の結果 | 原因 |
|---|---|---|
| 2nd floor | 2Nd Floor | 数字の直後の n が大文字に |
| abc123def | Abc123Def | 数字の直後の d が大文字に |
| room#3a | Room#3A | 数字の直後の a が大文字に |
| hello/world | Hello/World | スラッシュの直後が大文字に |
| ハイフンの直後が大文字に | ||
| o’neil | O’Neil | アポストロフィの直後が大文字に(姓なら正しい形) |
| john’s book | John’S Book | アポストロフィの直後の s が大文字に |
| it’s | It’S | 同上 |
| mcdonald | Mcdonald | 2文字目以降がすべて小文字に |
| iphone | Iphone | 同上 |
| usa | Usa | 同上 |
| abc def(全角) | Abc Def | 全角のまま、頭が全角の大文字に |
| 東京tokyo支店 | 東京tokyo支店 | 漢字の直後の英字は大文字にならない |
崩れ方は、大きく分けると次の3パターンです。
- 数字・記号の直後が大文字になる(2Nd・Room#3A)
- アポストロフィの直後が大文字になる(John’S・It’S)
- 固有名詞の中の大文字が小文字になる(Mcdonald・Iphone・Usa)
数字・記号の直後が大文字になる(2Nd・Room#3A)
今回試した範囲では、スペースに加えて数字や記号(/ や -)の直後も「単語の頭」として扱われました。「2nd」の n が大文字になるのはこのためです。
序数(1st・2nd・3rd)が入る住所なら、PROPER の結果を SUBSTITUTE で戻すのが手軽です。
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(PROPER(A2),"1St","1st"),"2Nd","2nd"),"3Rd","3rd")
探す文字は、PROPER をかけた後の形(”2Nd” など)で書くのがポイント。4th 以降も 4Th のように崩れる見込みなので、必要なら同じ形で足します。
一方、「Room#3A」のような部屋番号は、英字が大文字のほうが自然なことも多いもの。ここは直さずに残す判断もありです。
正規表現でまとめて直す手も浮かびます。ただ、REGEXREPLACE関数で大文字・小文字まで切り替えられるかは、本記事では確かめていません。
大文字・小文字の切り替えは PROPER・UPPER・LOWER に任せ、REGEXREPLACE は記号や区切りの整理に使う。この分担が無難です。
アポストロフィの直後が大文字になる(John’S・It’S)
アポストロフィの後ろも、単語の頭として扱われます。「o’neil → O’Neil」のような姓ではありがたい動きですよね。ところが所有格や短縮形では、「John’S」「It’S」と崩れてしまいます。
直すなら、PROPER の結果に含まれる「’S」を「’s」に戻しましょう。
=SUBSTITUTE(PROPER(A2),"'S","'s")
この式なら「John’S Book」は「John’s Book」に、「It’S」は「It’s」に戻ります。ただし「O’Sullivan」のように ‘S で始まる姓まで「O’sullivan」に変わってしまう点には注意が必要です。名簿にこうした姓があるなら、次の辞書補正で個別に登録するほうが安全でしょう。
McDonald・iPhone・USAは辞書シートとREDUCEで補正する
固有名詞が増えると、SUBSTITUTE の入れ子はどんどん長くなります。そこで、変換前と変換後のペアを「辞書」として表にまとめ、REDUCE と LAMBDA で順番に置き換える方法を使います。
まず、H列とI列に辞書を作ります。H列には PROPER をかけた後の形、I列には正しい表記を入れてください。
| 行 | H列(PROPER 後の形) | I列(正しい表記) |
|---|---|---|
| 2 | Mcdonald | McDonald |
| 3 | Iphone | iPhone |
| 4 | Usa | USA |
B2 に入れる式はこちらです。
=REDUCE(PROPER(A2),$H$2:$H,LAMBDA(acc,k,IF(k="",acc,SUBSTITUTE(acc,k,XLOOKUP(k,$H$2:$H,$I$2:$I)))))
たとえば A2 が「mcdonald and iphone in usa」の場合。結果は「McDonald And iPhone In USA」になりました。式の中身は次のとおりです。
PROPER(A2)が出発点(初期値)$H$2:$Hの語を1つずつ取り出し、k という名前で受け取る- acc はそれまでの置き換え結果。k を XLOOKUP で I列の正しい表記に引き当て、SUBSTITUTE で置き換える
IF(k="",acc, …)は「辞書の空行では何もしない」という意味
acc と k は自由につけられる仮の名前です。REDUCE は、初期値に範囲の値を1つずつ当てて処理を重ねていきます。
IF の部分を省くと、辞書範囲に空行が入ったときに結果全体が #N/A になりました。$H$2:$H のように下まで開いた範囲も、下の空セルを拾うので同じです。
原因は、空のキーを XLOOKUP で探すと #N/A が返ること。辞書の行を後から足していくなら、IF 込みのこの形を使ってください。
もうひとつの注意点は、辞書の語が別の単語の一部に含まれていると、そこも置き換わること。たとえば「usage」は PROPER で「Usage」になり、その中の「Usa」が辞書に当たって「USAge」に化けます。IF を足しても、この部分一致は防げません。
単語単位で置き換えたいときは、前後にスペースを付けて探す形にします。
=TRIM(REDUCE(" "&PROPER(A2)&" ",$H$2:$H$4,LAMBDA(acc,k,SUBSTITUTE(acc," "&k&" "," "&XLOOKUP(k,$H$2:$H$4,$I$2:$I$4)&" "))))
この式では「usage」は「Usage」のまま残りました。最初の例も、先ほどと同じ「McDonald And iPhone In USA」になります。
確かめたのは、空行を含まない $H$2:$H$4 を辞書範囲にした形です。なお、「usa.」「usa,」のように語の直後に記号が付いていると、スペースで区切られないため置き換わらない見込みです。
列全体を一括で変換する(ARRAYFORMULA・MAP/LAMBDA)
データが数百行あると、式を下へコピーするのも手間ですよね。スプレッドシートなら、1つの式で列全体を変換できます。ここでは、A2:A6 に次のデータ(4行目は空)が入っている例で説明します。
| 行 | A列(入力) | 一括変換の結果 |
|---|---|---|
| 2 | john smith | John Smith |
| 3 | JANE DOE | Jane Doe |
| 4 | (空) | (空に見える) |
| 5 | bob o’neil | Bob O’Neil |
| 6 | mary-jane | Mary-Jane |
この後紹介する3つの式は、どれもこの結果になりました。
ARRAYFORMULAで列ごと変換する
もっとも短いのは、PROPER を ARRAYFORMULA関数で包む書き方です。B2 に1つ入れるだけで、A列のデータが下までまとめて変換されます。
=ARRAYFORMULA(PROPER(A2:A))
A2:A のような下まで開いた範囲を渡しても、エラーにはなりません。1,000行のシートで試すと、結果はシートの最終行まで999行ぶん出力されました。A列に名前を書き足せば、B列にも自動で結果が出ます。
注意したいのは、結果が出る範囲に手入力の値があると展開できず、エラーになること。B列の結果の範囲には、何も入力しないでください。
IFで空白行を除く
A列が空の行は空のまま、データのある行だけ PROPER をかけたいなら、IF を組み合わせます。
=ARRAYFORMULA(IF(A2:A="","",PROPER(A2:A)))
実は PROPER は空のセルに対してエラーを出さず、空文字を返します。そのため PROPER だけなら、IF の有無で見た目の結果は変わりませんでした。
IF が役立つのは、式を発展させるとき。たとえば PROPER の結果に別の文字をつなげると、空行にもその文字だけが出てしまいます。最初から IF で空行を外しておけば安心です。
なお、空行の結果は「見た目は空でも長さ0の文字列」です。3つの式とも ISBLANK は FALSE で、上の5行を COUNTA で数えると空行も含めて5になりました。件数を数えたいときは、元のA列で数えるのが確実です。
MAPとLAMBDAで書く
MAP と LAMBDA を使っても、同じ変換ができます。
=MAP(A2:A6,LAMBDA(x,IF(x="","",PROPER(x))))
MAP は範囲の値を1つずつ取り出し、LAMBDA に書いた処理をかけて同じ形で返します。x は各セルの値につける仮の名前です。処理を LAMBDA の中に書き足せるので、式が長くなっても読みやすいのが利点。
ここでは A2:A6 のように範囲を決めて確かめています。下まで開いた範囲で使う場合は、少ない行で結果を確かめてから広げてください。
どれを選ぶかの判断表
| 書き方 | 式の短さ | 空白行の扱い | 辞書補正との組み合わせ |
|---|---|---|---|
ARRAYFORMULA(PROPER(A2:A)) | 最短 | 空文字(見た目は空) | 辞書補正の式は1セル用なので、別に下へコピーする |
ARRAYFORMULA(IF(A2:A="","",PROPER(A2:A))) | やや長い | 空文字。式を書き足しても空行は空のまま | 同上 |
MAP(A2:A6,LAMBDA(x,IF(x="","",PROPER(x)))) | 長め | 空文字 | LAMBDA の中に REDUCE を入れる形が考えられる(本記事では未検証) |
迷ったら、次の基準で選んでみてください。
- PROPER だけで列をそろえる →
ARRAYFORMULA(PROPER(A2:A)) - TRIM などを足して式を育てていく → IF 付きの ARRAYFORMULA か MAP
- 固有名詞の辞書補正が必要 → REDUCE の式を B2 に入れて下へコピー
MAP の中に REDUCE を入れる形を試すなら、数行のデータで結果を確認してから広げましょう。
変換結果だけを残して元の列と置き換える
PROPER の結果は数式なので、元の列を消すと結果も消えてしまいます。元データを変換後の値に置き換えたいときは、次の手順で進めてください。
- B列の結果のうち、データのある範囲(例: B2:B6)を選んでコピーします(Ctrl+C)
- A2 を選び、値のみ貼り付けをします(Ctrl+Shift+V。Mac は ⌘+Shift+V)
- B列の数式を削除します
ARRAYFORMULA で下まで開いた範囲を使った場合も、コピーするのはデータのある行だけにするのがコツです。
よくある質問
元のセルは書き換わる?
書き換わりません。PROPER は、式を入れたセルに変換結果を返すだけです。元の列を置き換えたいなら、前の章の手順で値のみ貼り付けをしてください。
日本語や全角英字が混ざっていても使える?
使えます。日本語の部分はエラーにならず、そのまま残ります。ただし「東京tokyo支店」は変化せず、漢字のすぐ後ろの英字は大文字になりませんでした。
全角英字は、全角のまま頭が大文字になります(abc def → Abc Def)。半角にそろえたいなら ASC 関数が使え、=ASC("abc") の結果は半角の「abc」でした。
=PROPER(ASC(A2))
注意したいのは、ASC がカタカナまで半角にしてしまうこと。「カタカナ」は「カタカナ」に、「ガ」は「ガ」(濁点が分かれて2文字)になります。英字だけの列に絞って使うのが安全です。
なお、逆に半角を全角にする JIS 関数はスプレッドシートにはなく、入力すると #NAME? になりました。
ExcelのPROPERと違いはある?
構文は同じで、引数も1つだけです。アポストロフィの直後が大文字になる(It’S)、全角英字は全角のまま頭が大文字になる、といった動きも Excel で知られている挙動と共通しています。Excel 版の使い方はExcelのPROPER関数の解説にまとめました。
違いが出やすいのは、列全体への当て方。スプレッドシートでは ARRAYFORMULA や MAP を使います。また Excel の JIS 関数はスプレッドシートでは使えないので、シートを移すときは気をつけてください。
空のセルを参照するとどうなる?
エラーにはならず、空文字が返ります。=LEN(PROPER(A2)) は0、=PROPER(A2)="" は TRUE でした。
見た目は空でも「長さ0の文字列」なので、ISBLANK では空と判定されません。空かどうかは =B2="" の形で確かめましょう。
まとめ
スプレッドシートの PROPER 関数は、英単語の頭だけを大文字に、残りを小文字にそろえる関数です。ポイントを振り返っておきましょう。
- 構文は
=PROPER(A2)。john smith も JOHN SMITH も「John Smith」にそろう - 全部大文字は UPPER、全部小文字は LOWER、頭だけ大文字は PROPER
- 余分な空白は
=PROPER(TRIM(A2))、アンダースコア区切りは SUBSTITUTE と組み合わせる - 文頭だけ大文字にするなら
=UPPER(LEFT(A2))&LOWER(MID(A2,2,LEN(A2))) - 数字・記号の直後(2Nd)とアポストロフィの直後(It’S)は大文字になるので、SUBSTITUTE で戻す
- McDonald・iPhone・USA のような固有名詞は、辞書と REDUCE の式でまとめて補正する(空行対策の IF を忘れずに)
- 列全体は
=ARRAYFORMULA(PROPER(A2:A))か MAP で一括変換。空行の結果は空文字になる - 全角英字は全角のまま変換される。半角にするなら ASC(カタカナも半角になる点に注意)
まずは名簿の1列に =ARRAYFORMULA(PROPER(A2:A)) を入れて、結果の一覧を眺めてみてください。2Nd や It’S、Mcdonald のような崩れが見つかったら、この記事の直し方を1つずつ足していけば十分です。

