スプレッドシートのDETECTLANGUAGE関数の使い方|言語検出

スポンサーリンク

スプレッドシートで海外のデータを扱っていると、「この文章は何語?」と確認したくなる場面がありますよね。

数件なら目で見て判断できますが、何十行もの多言語データが混在していると手作業では限界があります。

そんなときに便利なのが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」が返ることを確認してみてください。


関連記事

タイトルとURLをコピーしました