スプレッドシートで海外のデータを扱っていると、「この文章は何語?」と確認したくなる場面がありますよね。
数件なら目で見て判断できますが、何十行もの多言語データが混在していると手作業では限界があります。
そんなときに便利なのがDETECTLANGUAGE関数です。セルのテキストが何語かをサッと判定してくれます。
この記事では、DETECTLANGUAGE関数の基本からGOOGLETRANSLATE関数との連携まで、実践的な使い方をまとめて紹介します。
DETECTLANGUAGE関数とは?
DETECTLANGUAGE関数は、指定したテキストの言語を自動検出する、Googleスプレッドシート独自の関数です。
名前は英語の「DETECT LANGUAGE(言語を検出する)」からきています。
テキストを渡すと、言語を表す2文字のコード(「ja」「en」など)を返します。Excelにはない、スプレッドシートならではの機能です。
DETECTLANGUAGE関数にできることをまとめると、次のとおりです。
- テキストの言語をISO 639-1形式のコードで返す
- GOOGLETRANSLATE関数と組み合わせて自動翻訳する
- 多言語データを言語ごとに分類・仕分けする
- IF関数と組み合わせて言語に応じた処理を分岐する
NOTE
DETECTLANGUAGE関数はGoogleスプレッドシート独自の関数です。Excelには同等の関数がないため、ファイルをExcel形式で保存すると動作しません。
DETECTLANGUAGE関数の書き方(構文と引数)
基本構文
=DETECTLANGUAGE(テキストまたは範囲)
カッコの中に、言語を検出したいテキストやセルを指定します。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| テキストまたは範囲 | 必須 | 言語を検出したいテキスト、セル参照、またはセル範囲 |
引数は1つだけです。省略はできません。テキストを直接入力する場合はダブルクォーテーションで囲みます。
TIP
セル範囲を指定した場合は、範囲内の最初のセルのテキストで言語が判定されます。範囲全体を個別に判定するわけではないので注意してください。
DETECTLANGUAGE関数の基本的な使い方
まずはシンプルな例で動きを確認してみましょう。
テキストごとの判定結果
さまざまな言語のテキストをDETECTLANGUAGE関数で判定すると、次のような結果になります。
| 数式 | 結果 | 意味 |
|---|---|---|
=DETECTLANGUAGE("こんにちは") | ja | 日本語 |
=DETECTLANGUAGE("Hello") | en | 英語 |
=DETECTLANGUAGE("你好") | zh | 中国語 |
=DETECTLANGUAGE("안녕하세요") | ko | 韓国語 |
=DETECTLANGUAGE("Bonjour") | fr | フランス語 |
=DETECTLANGUAGE("Hallo") | de | ドイツ語 |
返ってくる値は「ISO 639-1」という国際規格の2文字コードです。
主な言語コード一覧
よく使う言語コードをまとめました。
| 言語コード | 言語名 | 表記例 |
|---|---|---|
| ja | 日本語 | こんにちは |
| en | 英語 | Hello |
| zh | 中国語(簡体字) | 你好 |
| ko | 韓国語 | 안녕하세요 |
| fr | フランス語 | Bonjour |
| de | ドイツ語 | Hallo |
| es | スペイン語 | Hola |
| pt | ポルトガル語 | Olá |
| it | イタリア語 | Ciao |
| ru | ロシア語 | Здравствуйте |
| ar | アラビア語 | مرحبا |
| th | タイ語 | สวัสดี |
| vi | ベトナム語 | Xin chào |
| hi | ヒンディー語 | नमस्ते |
これらのコードは、GOOGLETRANSLATE関数の言語指定にもそのまま使えますよ。
セル参照で判定する
セル参照を使えば、特定のセルの言語を検出できます。
=DETECTLANGUAGE(A1)
A1 に「東京タワー」と入っていれば「ja」を返します。「Tokyo Tower」なら「en」です。
DETECTLANGUAGE関数の実践的な使い方・応用例
GOOGLETRANSLATE関数と連携して自動翻訳する
DETECTLANGUAGE関数の最も実用的な使い方は、GOOGLETRANSLATE関数との組み合わせです。元の言語を自動検出して翻訳してくれます。ソース言語を手動で指定する必要がなくなりますよ。
=GOOGLETRANSLATE(A2, DETECTLANGUAGE(A2), "ja")
A2 のテキストが何語であっても、自動的に日本語に翻訳してくれます。英語・中国語・韓国語が混在したデータでも、1つの数式で対応できるのが便利です。
GOOGLETRANSLATE関数の詳しい使い方はGOOGLETRANSLATE関数の記事で解説しています。
TIP
GOOGLETRANSLATE関数の第2引数に
"auto"を指定しても言語を自動検出できます。ただし、DETECTLANGUAGE関数を使えば「検出された言語コード」を別セルに保持できるため、あとから言語ごとの集計や仕分けに活用できますよ。
IF関数と組み合わせて言語ごとに処理を分岐する
テキストの言語に応じてラベルを付けたい場面で使えます。
=IF(DETECTLANGUAGE(A2)="ja","日本語","その他")
A2 が日本語なら「日本語」、それ以外なら「その他」と表示します。
もう少し細かく分岐させたい場合は、IFS関数やSWITCH関数を使うとスッキリ書けます。
=SWITCH(DETECTLANGUAGE(A2),"ja","日本語","en","英語","zh","中国語","その他")
問い合わせデータの言語ごとの振り分けなどに活用できますよ。
多言語データを言語ごとにフィルタする
FILTER関数と組み合わせると、特定の言語のデータだけを取り出せます。
=FILTER(A2:B20, DETECTLANGUAGE(A2:A20)="en")
A列のテキストが英語のデータだけを抽出できます。多言語の問い合わせリストやアンケートデータの整理に便利です。
言語ごとの件数をカウントする
COUNTIF関数と組み合わせて、各言語のデータが何件あるか集計できます。
まず、B列にDETECTLANGUAGE関数の結果を出しておきます。
B2: =DETECTLANGUAGE(A2)
そのうえで、言語ごとの件数をカウントします。
=COUNTIF(B2:B100,"ja")
日本語データの件数がわかります。「en」「zh」など他の言語コードに変えれば、それぞれの件数も確認できますよ。
多言語メール対応の振り分けルール
海外からの問い合わせメールが混在するリストで、言語に応じて担当者を自動で割り当てるケースです。
=SWITCH(DETECTLANGUAGE(A2),"ja","田中","en","Smith","zh","王","対応不可")
A2 のテキストが日本語なら「田中」、英語なら「Smith」、中国語なら「王」と担当者名を表示します。対応言語以外は「対応不可」としてフラグを立てられます。
よくあるエラーと対処法
DETECTLANGUAGE関数で「思った結果にならない」ケースをまとめました。
| 症状 | 原因 | 対処法 |
|---|---|---|
| 空文字が返る | テキストが空白または数値のみ | テキストデータが入っているか確認する |
| 意図しない言語コードが返る | テキストが短すぎて誤判定 | 3語以上の文章を入力すると精度が上がる |
| 毎回結果が変わる | Googleの言語検出APIの判定が揺れる | 短いテキストほど揺れやすい。文章が長いほど安定する |
| #N/A エラーが出る | Googleの言語検出サービスに一時的に接続できない | 時間をおいて再度実行する |
| 範囲指定で1つしか結果が出ない | 範囲を渡すと先頭セルの言語のみ検出される | 各セルに個別にDETECTLANGUAGE関数を入れる |
テキストが短いと精度が下がるのが最も多いトラブルです。「OK」のような短い単語は英語にも日本語のローマ字にも見えるため、誤判定が起こりやすくなります。
目安として、3語以上の文章を渡すと安定した結果が得られますよ。
Excelとの違い
DETECTLANGUAGE関数はGoogleスプレッドシート独自の関数です。Excelには同等の関数がありません。
| 項目 | Googleスプレッドシート | Excel |
|---|---|---|
| DETECTLANGUAGE関数 | 使える | なし |
| 言語検出の代替手段 | ― | VBAやPower Automateで外部APIを呼び出す |
| GOOGLETRANSLATE関数 | 使える | なし |
Excelで言語検出を行いたい場合は、VBAでGoogle翻訳APIやMicrosoft Translator APIを呼び出す方法がありますが、スプレッドシートのように数式1つで完結する手軽さはありません。
多言語データの処理が多い場合は、この用途ではスプレッドシートのほうが便利です。
まとめ
DETECTLANGUAGE関数は、テキストの言語を自動検出するスプレッドシート独自の関数です。
ポイントを整理します。
- 構文は
=DETECTLANGUAGE(テキストまたは範囲)で、引数は1つだけ - ISO 639-1形式の2文字言語コード(ja, en, zh など)を返す
- GOOGLETRANSLATE関数と組み合わせると、ソース言語の手動指定が不要になる
- IF関数やSWITCH関数と組み合わせて言語ごとの処理分岐ができる
- FILTER関数やCOUNTIF関数で多言語データの抽出・集計にも使える
- 短いテキストは誤判定が起きやすいので、3語以上の文章を渡すのがコツ
- Excelには同等の関数がないため、スプレッドシートならではの強みといえる
まずは =DETECTLANGUAGE("こんにちは") で「ja」が返ることを確認してみてください。
