「このセルに入っているのは数値? テキスト?」と手作業で確認していませんか。
数件ならセルをクリックすれば書式バーの右寄せ・左寄せでだいたい見分けがつきますが、データが数百行になると一つひとつ目で追うのは現実的ではありません。
数値に見えて実はテキストだった、というミスは集計エラーや SUM 関数の結果がゼロになる原因になりがちですよね。そんなときに便利なのがTYPE関数です。
この記事では、TYPE関数の基本から実務で役立つ活用パターン、よくあるエラーの対処法、ISNUMBER関数などIS系関数との使い分けまでまとめて紹介します。データチェックの作業をぐっと効率化できますよ。
スプレッドシートのTYPE関数とは?
TYPE関数は、指定した値のデータ型を数値コードで返す関数です。
セルの中身が数値なのかテキストなのか、論理値なのかエラーなのかを 1 桁から 2 桁の番号で教えてくれます。
TYPE関数が返す数値コードは次の5種類です。
| 返り値 | データ型 | 具体例 |
|---|---|---|
| 1 | 数値 | 100、3.14、日付(シリアル値)、時刻 |
| 2 | テキスト | “こんにちは”、”123″(文字列の数字)、空文字 “” |
| 4 | 論理値 | TRUE、FALSE |
| 16 | エラー値 | #VALUE!、#REF!、#N/A、#DIV/0! など |
| 64 | 配列 | {1,2,3}、ARRAYFORMULA の結果 |
TYPE関数にできることをまとめると、次のとおりです。
- セルのデータ型を数値コード(1/2/4/16/64)で返す
- IF関数やSWITCH関数と組み合わせてデータ型ごとに処理を分岐する
- 入力データの検証(数値であるべきセルにテキストが入っていないかチェック)
- エラー値の検出と分類
- 条件付き書式と組み合わせて型違いのセルをハイライト
NOTE
TYPE関数はGoogleスプレッドシートの全バージョンで使えます。Excelにも同名の関数があり、返り値のコードも完全に同じなので、ファイルのやり取りでも安心です。
TYPE関数の書き方(構文と引数)
基本構文
=TYPE(値)
カッコの中にデータ型を調べたい値を指定します。シンプルですね。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 値 | 必須 | データ型を調べたい値、セル参照、または数式の結果 |
引数は1つだけです。省略はできません。セル参照・直接値・数式の結果のいずれも指定できます。
TIP
TYPE関数はエラー値を渡しても自身はエラーにならず、必ず 16 を返します。
ISERROR関数と違い、エラーの種類にかかわらず一律で検出できますよ。エラー処理の前段として使うと数式がシンプルになります。
TYPE関数の基本的な使い方
まずはシンプルな例で動きを確認してみましょう。実際にセルに入力すると感覚がつかめます。
値の種類ごとの判定結果
さまざまなデータをTYPE関数で調べると、次のような結果になります。
| 数式 | 結果 | 理由 |
|---|---|---|
| =TYPE(100) | 1 | 整数の数値 |
| =TYPE(3.14) | 1 | 小数の数値 |
| =TYPE(“こんにちは”) | 2 | テキスト |
| =TYPE(“123”) | 2 | 文字列として入力された数字 |
| =TYPE(TRUE) | 4 | 論理値 |
| =TYPE(#N/A) | 16 | エラー値 |
| =TYPE({1,2,3}) | 64 | 配列リテラル |
| =TYPE(TODAY()) | 1 | 日付はシリアル値(数値)として扱われる |
| =TYPE(NOW()) | 1 | 時刻も数値(小数)として扱われる |
日付と時刻の扱いに注意しましょう。スプレッドシートでは日付は内部的に数値(シリアル値)で管理されています。たとえば 2026/3/22 は内部的には 46107 という数値で、見た目だけが日付フォーマットになっています。そのためTYPE関数は 1(数値)を返します。
セル参照で確認する
セル参照を使えば、特定のセルのデータ型を調べられます。
=TYPE(A1)
A1 に「100」が入っていれば 1 を返します。「こんにちは」なら 2 です。データが入っているシートを直接調べたいときはこちらの形式が便利です。
空白セルの場合
空白セルを指定すると、TYPE関数は 1(数値)を返します。空白は内部的に 0 として扱われるためです。これは少し意外ですが、計算式での扱いを考えるとつじつまが合っています。
=TYPE(A1) → A1が空白なら 1 を返す
空白セルと数値を区別したい場合は、IF関数で先に空白チェックをしましょう。次のように書けば「空白」と表示されます。
=IF(A1="","空白",TYPE(A1))
ISBLANK関数を使う方法もあります。ISBLANK関数 は完全に空のセルだけを TRUE と判定するので、より厳密に空白を見分けたいときに役立ちますよ。
TYPE関数の実践的な使い方・応用例
実務でよく使うパターンを 5 つ紹介します。コピペして列名やセル範囲だけ書き換えれば、すぐ使えます。
IF関数と組み合わせてデータ型を日本語で表示する
数値コードだけでは分かりにくいので、日本語ラベルに変換すると便利です。レビュー作業や引き継ぎ資料で重宝します。
=IF(TYPE(A2)=1,"数値",IF(TYPE(A2)=2,"テキスト",IF(TYPE(A2)=4,"論理値",IF(TYPE(A2)=16,"エラー","配列"))))
ちょっと長い数式に見えますが、やっていることはシンプルです。TYPE関数の返り値(1/2/4/16/64)に応じて対応するラベルを返しているだけですよ。
SWITCH関数を使うともっとすっきり書けます。
=SWITCH(TYPE(A2),1,"数値",2,"テキスト",4,"論理値",16,"エラー",64,"配列")
SWITCH関数は値ごとに結果を切り替えられるので、IFのネストを避けたいときに便利です。条件が増えても見通しが良いまま保てます。
数値であるべきセルにテキストが混入していないかチェックする
売上データや数量の列に、数値に見えるテキスト(”100″ など)が混ざっていると集計がズレます。CSVをインポートしたときによくある事故です。TYPE関数で一括チェックできます。
=IF(TYPE(B2)<>1,"要確認","OK")
B2 のデータ型が数値(1)でなければ「要確認」と表示します。これを列全体にコピーすれば、テキスト混入をまとめて検出できますよ。
数値かどうかを判定するなら ISNUMBER関数 のほうが直感的ですが、TYPE関数なら他のデータ型と一緒にチェックできるのが強みです。
ARRAYFORMULA と組み合わせて列全体を一括チェックする
1行ずつ数式をコピーする代わりに、ARRAYFORMULAで列全体を一括処理できます。
=ARRAYFORMULA(IF(B2:B100="","",IF(TYPE(B2:B100)<>1,"要確認","OK")))
B2からB100まで一気にデータ型をチェックします。空白セルはスキップしているので、不要な「要確認」が出ないようになっています。
データ件数が変わるシートなら範囲を B2:B に広げてもよいでしょう。大量のデータを扱うときに便利な方法です。
条件付き書式でテキスト混入を可視化する
「要確認」と表示するだけでなく、セルの色を変えて目立たせる方法もあります。条件付き書式で次のカスタム数式を設定します。
=AND(B2<>"",TYPE(B2)<>1)
数値以外のセルが薄い赤色になり、ぱっと見で問題箇所がわかります。データ入力チームと共有するシートに仕込んでおくと、間違いに気づいてもらいやすくなります。
エラー値の検出に使う
TYPE関数はエラー値を渡しても自身はエラーにならないという特徴があります。これを利用して、エラーの有無を判定できます。
=IF(TYPE(A2)=16,"エラーあり","正常")
ISERROR関数 でも同じことができます。ただしTYPE関数なら、エラー判定と他のデータ型判定を1つの数式でまとめられるのが利点です。
たとえば「エラーなら『エラー』、テキストなら『要数値化』、それ以外は空白」のように複数条件を組み合わせたいときに便利です。
=SWITCH(TYPE(A2),16,"エラー",2,"要数値化","")
よくあるエラーと対処法
TYPE関数で「思った結果にならない」ケースをまとめました。ほとんどは TYPE 関数の仕様を理解すれば解決できます。
| 症状 | 原因 | 対処法 |
|---|---|---|
| 数値のはずなのに 2(テキスト)が返る | セルにテキスト形式の数字(”100″)が入っている | VALUE関数で数値に変換する。=VALUE(A1) |
| 日付セルで 1 が返る | 日付はシリアル値(数値)で管理されている | 仕様どおりの動作。日付かどうかを調べるなら ISDATE関数 を使う |
| 空白セルで 1 が返る | 空白は 0(数値)として扱われる | 空白を区別するなら =IF(A1="","空白",TYPE(A1)) |
| 配列で 64 が返らない | セルに配列数式の結果が表示されている場合、個々のセルは要素の型を返す | 配列全体を確認するには =TYPE({1,2,3}) のように直接指定する |
| ハイパーリンクで 2 が返る | ハイパーリンクは内部的にテキストとして扱われる | URL を判定したいなら ISURL関数 を使う |
| 数式そのものを判定したい | TYPE関数は数式の結果のみを判定する | 数式かどうかは ISFORMULA関数 を使う |
TYPE関数とIS系関数の使い分け
スプレッドシートにはデータ型を判定する関数が複数あります。TYPE関数との違いを整理しましょう。
| 関数 | 返り値 | 用途 |
|---|---|---|
| TYPE | 数値コード(1/2/4/16/64) | データ型を数値で分類したいとき |
| ISNUMBER | TRUE/FALSE | 数値かどうかだけを判定したいとき |
| ISTEXT | TRUE/FALSE | テキストかどうかだけを判定したいとき |
| ISERROR | TRUE/FALSE | エラーかどうかだけを判定したいとき |
| ISLOGICAL | TRUE/FALSE | 論理値かどうかだけを判定したいとき |
| ISDATE | TRUE/FALSE | 日付として認識できるかを判定したいとき |
| ISBLANK | TRUE/FALSE | 完全に空のセルかを判定したいとき |
使い分けのポイントは次の3つです。
- 単一の型をチェックするだけなら IS 系関数: 「数値かどうかだけ知りたい」なら
ISNUMBER関数のほうがシンプルで読みやすいです。 - 複数のデータ型を一度に分岐したいときは TYPE 関数: 「数値なら計算、テキストならそのまま表示、エラーなら警告」のように 3 つ以上に分岐する場合は、TYPE関数とSWITCH関数の組み合わせがすっきり書けます。
- 日付やURLなど特殊な型は専用関数を使う: 日付なら
ISDATE関数、URL ならISURL関数、数式そのものを判定するならISFORMULA関数が便利です。
迷ったら「型を 1 つだけチェック → IS 系」「複数の型で分岐 → TYPE」と覚えておけばOKです。
Excelとの違い
TYPE関数はExcelとGoogleスプレッドシートでほぼ同じ動作です。コピー&ペーストでも互換性で困ることはありません。
| 項目 | Excel | Googleスプレッドシート |
|---|---|---|
| 構文 | =TYPE(値) | =TYPE(値) |
| 数値 | 1 | 1 |
| テキスト | 2 | 2 |
| 論理値 | 4 | 4 |
| エラー値 | 16 | 16 |
| 配列 | 64 | 64 |
| 引数の数 | 1(必須) | 1(必須) |
返り値のコードも完全に同じです。Excelファイルとして共有してもTYPE関数の挙動はそのまま維持されます。安心して使ってください。
TYPE関数のFAQ
Q1. TYPE関数は数式そのものの種類を判定できますか?
いいえ、TYPE関数は数式の結果を判定するだけです。たとえば =A1+1 というセルを TYPE 関数で調べると、計算結果が数値なら 1、エラーなら 16 が返ります。「そのセルに数式が入っているかどうか」を判定したい場合は ISFORMULA関数 を使ってください。
Q2. なぜ空白セルで 1(数値)が返るのですか?
スプレッドシートでは空白セルは内部的に 0(数値)として扱われるためです。SUM関数で空白セルが含まれていてもエラーにならないのと同じ理由です。空白を厳密に区別したい場合は IF関数で ="" のチェックを先に行うか、ISBLANK関数 を使いましょう。
Q3. 文字列の数字(”100″ など)を数値に変換するにはどうすればよいですか?
VALUE関数を使います。=VALUE("100") と書けば数値の 100 が返ります。CSVインポートで数字がテキスト扱いになってしまった列は、別の列で =VALUE(A2) を行ってから値貼り付けで上書きするのが定番のテクニックです。TYPE関数で 2 が返ったセルが対象、と覚えておくと作業しやすいですね。
Q4. ARRAYFORMULA で TYPE 関数を使うときの注意点は?
ARRAYFORMULA の中で TYPE 関数を使う場合、範囲全体に対して一括で評価されます。=ARRAYFORMULA(TYPE(A2:A)) のように書けば各セルの型コードがずらっと返ります。ただし配列の中身を 64 として扱いたい場合は、配列リテラル {1,2,3} のように直接指定する必要があります。
Q5. 数値か日付かを区別したいときは?
TYPE関数では区別できません。日付はシリアル値(数値)として扱われるためです。日付かどうかを判定するなら ISDATE関数 を使うか、書式や値の範囲で判定するロジックを組む必要があります。「2020年以降の日付か」のように厳密にチェックしたい場合は、シリアル値の数値範囲(例: >=43831)で比較する方法もありますよ。
Q6. TYPE関数の結果を条件付き書式で活用できますか?
はい、できます。条件付き書式の「カスタム数式」に =TYPE(A1)<>1 のように指定すれば、数値以外のセルだけ色をつけられます。データ入力ミスを発見したいシートに仕込んでおくと、目視チェックの手間が大きく減りますよ。
まとめ
TYPE関数は、セルのデータ型を数値コードで返すシンプルな関数です。シンプルですが、データ検証や型分岐のロジックを組むときの土台になる便利な関数です。
ポイントを整理します。
- 構文は
=TYPE(値)で、引数は1つだけ - 返り値は 1(数値)、2(テキスト)、4(論理値)、16(エラー)、64(配列)の5種類
- 日付や時刻はシリアル値として扱われるため 1(数値)を返す
- 空白セルは 0(数値)として扱われるため 1 を返す
- IF関数やSWITCH関数と組み合わせてデータ型ごとに処理を分岐できる
- 「数値かどうかだけ」なら ISNUMBER関数、複数型の分岐なら TYPE関数
- 日付やURLなど特殊な型は IS 系の専用関数を使うとよい
- ExcelのTYPE関数と完全に同じ動作で、互換性も安心
まずは =TYPE(A1) で手元のデータの型を調べるところから試してみてください。データ集計の前段にこの一手間を入れるだけで、ミスが大幅に減らせますよ。
