CODE関数の基本的な使い方(スプレッドシート)
「このセルに入っている文字、見た目は同じなのにVLOOKUPでヒットしない…」。スプレッドシートで文字の照合がうまくいかないとき、原因は見えない文字コードの違いかもしれません。
そんなときに役立つのがCODE関数です。セルの文字がどの文字コード(Unicode値)を持っているか調べられます。
この記事ではCODE関数の基本から、実務で使える文字判定テクニック、CHAR関数との逆関数関係まで解説しますよ。
読み方と語源
CODE関数の読み方は「コード」です。「Code(符号・暗号)」がそのまま関数名になっており、文字を数値の符号(文字コード)に変換するという意味です。
構文と引数の説明
CODE関数の構文はこちらです。
=CODE(文字列)
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 文字列 | 必須 | 文字コードを調べたい文字列(先頭の1文字が変換対象) |
引数は1つだけなのでとてもシンプルです。文字列の先頭1文字のUnicode値を数値で返します。
基本的な書き方の例
アルファベットの「A」の文字コードを調べてみましょう。
=CODE("A")
→ 65
大文字のAは文字コード65です。小文字のaも確認してみます。
=CODE("a")
→ 97
大文字と小文字では文字コードが異なります。大文字A〜Zは65〜90、小文字a〜zは97〜122です。
数字の「0」(テキスト)はどうでしょうか。
=CODE("0")
→ 48
テキストとしての0〜9は文字コード48〜57に対応しています。
先頭1文字だけが対象
CODE関数は文字列の先頭1文字だけを変換します。
=CODE("ABC")は「A」の文字コード65を返します。2文字目以降は無視されるので注意してくださいね。
セル参照で使う
直接文字を指定するだけでなく、セル参照でも使えます。
=CODE(A1)
A1に「東」と入っていれば、「東」のUnicode値26481が返ります。日本語の漢字やひらがなにもしっかり対応していますよ。
主な文字の文字コード一覧
CODE関数でよく調べる文字の文字コードをまとめます。
| 文字 | CODE関数 | 文字コード | 備考 |
|---|---|---|---|
| A | =CODE(“A”) | 65 | 大文字アルファベット開始 |
| Z | =CODE(“Z”) | 90 | 大文字アルファベット終了 |
| a | =CODE(“a”) | 97 | 小文字アルファベット開始 |
| z | =CODE(“z”) | 122 | 小文字アルファベット終了 |
| 0 | =CODE(“0”) | 48 | 数字テキスト開始 |
| 9 | =CODE(“9”) | 57 | 数字テキスト終了 |
| スペース | =CODE(” “) | 32 | 半角スペース |
| ! | =CODE(“!”) | 33 | 感嘆符 |
| あ | =CODE(“あ”) | 12354 | ひらがな |
| ア | =CODE(“ア”) | 12450 | カタカナ |
| 亜 | =CODE(“亜”) | 20124 | 漢字 |
アルファベットと数字の文字コードは連番になっているのがポイントです。この規則性を使った実務テクニックを次のセクションで紹介します。
CODE関数の実務パターン集
大文字・小文字を判定する
セルの先頭文字が大文字か小文字かをCODE関数で判定できます。
=IF(AND(CODE(A1)>=65, CODE(A1)<=90), "大文字", "小文字")
大文字A〜Zの文字コードは65〜90の範囲です。この範囲に入っていれば大文字、そうでなければ小文字と判定しています。
アルファベットかどうかを判定する
入力値がアルファベットかどうかをチェックする数式です。
=IF(OR(AND(CODE(A1)>=65, CODE(A1)<=90), AND(CODE(A1)>=97, CODE(A1)<=122)), "アルファベット", "その他")
数式が少し長くなりますが、やっていることはシンプルです。文字コードが65〜90(大文字)または97〜122(小文字)の範囲に入っているかを確認しているだけですよ。
文字コードを使った並べ替え基準の作成
文字コードの大小関係を使って、独自の並べ替え基準を作れます。
=CODE(LEFT(A1, 1))
この数式で先頭文字の文字コードを取得し、その列を基準に並べ替えると、文字コード順(数字→大文字→小文字→日本語)で並びます。通常のアルファベット順とは異なる並び順が必要なときに活用してみてください。
見えない文字(制御文字)を検出する
データの中に見えない制御文字が紛れ込んでいるかチェックできます。
=IF(CODE(A1)<32, "制御文字あり", "OK")
文字コードが32未満の文字は制御文字(タブ、改行など画面に表示されない文字)です。VLOOKUPの不一致やデータ結合の失敗の原因になりやすいので、このチェックが役立ちます。
制御文字を除去したい場合はCLEAN関数を使ってくださいね。
全角・半角の判別に使う
同じ「A」でも全角と半角では文字コードが異なります。
=CODE("A") → 65 (半角)
=CODE("A") → 65313 (全角)
この違いを利用して、セルの値が全角か半角かを判別できます。
=IF(CODE(A1)>255, "全角文字", "半角文字")
Unicode値が255以下なら半角(ASCII範囲)、256以上なら全角という判定です。データのクレンジング作業で全角半角の混在を発見するのに便利ですよ。
CHAR関数との違い・使い分け(逆関数関係)
CODE関数とCHAR関数は「文字→数値」と「数値→文字」の逆の関係にあります。セットで覚えておくと便利です。
比較表
| 項目 | CODE | CHAR |
|---|---|---|
| 変換方向 | 文字→数値 | 数値→文字 |
| 読み方 | コード | キャラクター |
| 構文 | =CODE(文字列) | =CHAR(数値) |
| 引数 | 文字列(先頭1文字を変換) | Unicode値(数値) |
| 戻り値 | 数値 | テキスト |
逆変換の確認
CODE関数とCHAR関数を連続で適用すると、元の値に戻ります。
=CHAR(CODE("A"))
→ 「A」(元の文字に戻る)
=CODE(CHAR(65))
→ 65(元の数値に戻る)
つまり CHAR(CODE(文字)) = 文字 と CODE(CHAR(n)) = n が成り立ちます。
どちらを使うべきか
次の基準で選んでみてください。
- セルの文字が何の文字コードか調べたい → CODE関数
- 数式内で改行や特殊文字を挿入したい → CHAR関数
- 文字コード表を作りたい → CODE関数とCHAR関数を両方使う
文字の判定・検証にはCODE関数、文字の生成・挿入にはCHAR関数と覚えておけばOKです。
よくあるエラーと対処法
CODE関数で発生しやすいトラブルをまとめます。
| エラー・症状 | 原因 | 対処法 |
|---|---|---|
| #VALUE! | 引数が空文字(””)またはセルが空 | 空でないセルを指定する。IF関数で空チェックを入れる |
| 想定外の数値が返る | 見えない制御文字が先頭にある | CLEAN関数やTRIM関数で前処理する |
| 全角・半角で値が異なる | 同じ文字でも全角と半角は別の文字コード | 事前にASC関数で半角に統一する |
| 2文字目以降を取得したい | CODE関数は先頭1文字のみ対象 | MID関数で対象文字を抽出してからCODE関数に渡す |
いちばん多いのが「セルが空のときに#VALUE!エラーになる」ケースです。次のようにIF関数で空チェックを入れると安全ですよ。
=IF(A1="", "", CODE(A1))
2文字目以降の文字コードを取得したい場合は、MID関数と組み合わせます。
=CODE(MID(A1, 2, 1))
この数式でA1の2文字目の文字コードを取得できます。
まとめ
スプレッドシートのCODE関数の使い方を振り返りましょう。
| 項目 | 内容 |
|---|---|
| 読み方 | コード |
| 機能 | 文字を文字コード(Unicode値)に変換する |
| 構文 | =CODE(文字列) |
| 対象 | 文字列の先頭1文字 |
| 逆関数 | CHAR(数値→文字) |
| 主な用途 | 文字の判定・検証・制御文字の検出 |
CODE関数は文字の正体を数値で確認できる関数です。大文字・小文字の判定、制御文字の検出、全角・半角の判別など、データの品質チェックに重宝します。
数式内で改行や特殊文字を挿入したい場合は、逆関数のCHAR関数を使ってくださいね。文字の検証にはCODE関数、文字の生成にはCHAR関数と覚えておけば使い分けに迷いませんよ。
