「海外の顧客から届いたメール、英語?スペイン語?見分けるだけでもひと苦労」「多言語アンケートの自由記述欄を言語別に集計したい」。グローバル業務を担当していると、こんな場面が増えていますよね。
1件ずつ目視で判定するのは現実的ではありません。数百件を前にため息が出てしまいますよね。
そんなときに頼りになるのがExcelのDETECTLANGUAGE関数です。セルに入っている文字列を解析して、使われている言語を自動で判定してくれます。
この記事では、ExcelのDETECTLANGUAGE関数の使い方を基本から実務の応用例まで解説します。SWITCH関数との組み合わせやTRANSLATE関数との連携もまとめましたので、ぜひ参考にしてください。
ExcelのDETECTLANGUAGE関数とは?
DETECTLANGUAGE関数は、セルの文字列を解析して使われている言語を判定するExcelの関数です。読み方は「ディテクトランゲージ」で、判定結果はISO 639-1形式の2文字の言語コードで返ります。
内部ではMicrosoft Translation Services(クラウドの翻訳サービス)を利用しているため、インターネット接続が必須です。簡単な単語から長文まで幅広い言語を判定してくれますよ。
比較的新しい関数ですが、使い方はとてもシンプルです。引数は1つだけなので、初めてでも迷いませんよ。
どんなときに使う関数か
ExcelのDETECTLANGUAGE関数は次のような場面で活躍します。
- グローバル顧客リストを言語別に分類したいとき
- 多言語アンケートの自由記述を言語別に振り分けたいとき
- 海外からの問い合わせメールを担当者別にアサインしたいとき
- TRANSLATE関数(指定した言語に翻訳する関数)と組み合わせて多言語データを一括翻訳したいとき
「どの言語か分からないけどとりあえず仕分けたい」というシーンにぴったりの関数です。
利用条件(Microsoft 365が必須)
DETECTLANGUAGE関数を使うには、Microsoft 365のサブスクリプションが必要です。永続ライセンス版のExcel 2019・Excel 2021・LTSC 2024では使えません。
対応環境は次のとおりです。
- Excel for Microsoft 365(Windows / Mac)
- Excel for the web
- Excel Mobile
また、裏側でクラウド翻訳サービスを呼び出す仕組みなので、インターネット接続が必須です。オフライン環境では動きませんので注意してください。
お使いのバージョンが対応しているか、事前に確認しておきましょう。
DETECTLANGUAGE関数の構文と戻り値
基本構文
=DETECTLANGUAGE(テキスト)
引数は1つだけ、判定したいテキストまたはセル参照を指定するだけです。とてもシンプルですね。
引数:テキスト
言語を判定したい文字列、またはセル参照を指定します。
=DETECTLANGUAGE("Hello world")
=DETECTLANGUAGE(A2)
直接文字列を入れる場合はダブルクォーテーションで囲みます。実務ではセル参照を使うのが一般的ですよ。
セル範囲を指定すると、スピル(数式が自動で配列に展開される機能)により一度に複数セルの判定ができます。
=DETECTLANGUAGE(A2:A20)
1つの数式で20件分の判定結果がA2:A20の隣にずらっと表示されます。ループ処理を書く感覚で、しかも数式1つで済むのがうれしいですね。
戻り値:ISO 639-1 言語コード
DETECTLANGUAGE関数の戻り値は、ISO 639-1という国際規格に基づく2文字の言語コードです。代表的なものをまとめました。
| 言語コード | 言語名 |
|---|---|
ja | 日本語 |
en | 英語 |
zh | 中国語 |
ko | 韓国語 |
es | スペイン語 |
fr | フランス語 |
de | ドイツ語 |
it | イタリア語 |
pt | ポルトガル語 |
ru | ロシア語 |
ar | アラビア語 |
th | タイ語 |
vi | ベトナム語 |
Microsoft Translation Servicesがサポートする100以上の言語に対応しています。メジャーな言語はほぼカバーされているので、実務で困ることはまずありませんよ。
TIP
中国語の場合、繁体字と簡体字の区別は関数によっては
zh-Hans(簡体字)zh-Hant(繁体字)のように細分化されることもあります。基本的には2文字コードで返ると覚えておけば大丈夫です。
Excel DETECTLANGUAGE関数の基本的な使い方
それでは実際に数式を組み立ててみましょう。
1つのセルの言語を判定する
もっともシンプルな例です。A2セルの文字列の言語を判定します。
=DETECTLANGUAGE(A2)
A2が「こんにちは」なら ja 、「Hello」なら en 、「Hola」なら es が返ります。一瞬で判定してくれますよ。
複数セルの言語を一括判定する
A2:A10に多言語のテキストが入っている場合、1つの数式で全行を判定できます。
=DETECTLANGUAGE(A2:A10)
B2セルにこの数式を入れるだけで、B2:B10に判定結果がスピルします。数百件あっても1つの数式で済むのが快適ですよ。
IF関数と組み合わせて日本語か判定する
判定結果が日本語かどうかで分岐する例です。
=IF(DETECTLANGUAGE(A2)="ja", "日本語", "その他")
顧客リストから日本語のレコードだけを「日本語」としてマークし、それ以外を「その他」に振り分けます。日本語対応可能な担当者へのアサインに使えますね。
直接文字列を渡してテストする
数式の動作を確認したいときは、直接文字列を渡すと手軽です。
=DETECTLANGUAGE("Bonjour le monde")
この例では fr (フランス語)が返ります。数式の挙動チェックにどうぞ。
実践的な使い方・応用例
ここからは実務で役立つ応用パターンを紹介します。
グローバル顧客リストを言語別に分類する
海外の顧客から届いたお問い合わせ本文を、言語別に自動分類する例です。
A列に問い合わせ本文、B列に判定結果、C列に日本語の言語名を表示します。
B2セル:
=DETECTLANGUAGE(A2)
C2セル(SWITCH関数で日本語名に変換):
=SWITCH(B2, "ja","日本語", "en","英語", "zh","中国語", "ko","韓国語", "es","スペイン語", "fr","フランス語", "de","ドイツ語", "その他")
SWITCH関数(複数の候補値を順にチェックして一致した値を返す関数)を使うと、言語コードを読みやすい日本語ラベルに変換できます。顧客リストの見た目がぐっと分かりやすくなりますよ。
| A列(本文) | B列(コード) | C列(言語名) |
|---|---|---|
| お世話になっております | ja | 日本語 |
| Thank you for your support | en | 英語 |
| 感谢您的支持 | zh | 中国語 |
| Merci beaucoup | fr | フランス語 |
IFSの代わりにSWITCHを使うと数式がスッキリしますよ。
多言語アンケートを言語別に振り分ける
アンケートの自由記述欄を言語別にカウントする例です。COUNTIF関数と組み合わせます。
=COUNTIF(B2:B500, "ja")
B列にDETECTLANGUAGE関数の結果を出しておけば、この数式で「日本語回答の件数」を集計できます。言語別の集計レポートがすぐに作れますよ。
FILTER関数と組み合わせて英語の行だけ抽出する
さらに便利なのがFILTER関数との組み合わせです。英語のレコードだけを別シートに抜き出すイメージです。
=FILTER(A2:C500, DETECTLANGUAGE(A2:A500)="en")
スピルで英語レコードが一気に展開されます。担当者別にシートを分けたいときに威力を発揮しますよ。
TRANSLATE関数と連携して自動翻訳する
DETECTLANGUAGE関数の真価は、TRANSLATE関数(指定した言語に翻訳する関数)と組み合わせたときに発揮されます。
=TRANSLATE(A2, DETECTLANGUAGE(A2), "ja")
この数式は「A2の言語を自動検出し、日本語に翻訳する」という意味です。送信元の言語が何であれ、すべて日本語に統一できます。
多言語の顧客フィードバックを一括で日本語化するワークフローがこれ1本で完成しますよ。従来はGoogle翻訳やDeepLに1件ずつコピペしていた作業が、数式1つで終わります。
IFERRORでエラー時のラベルを付ける
短文や記号だけのセルでは判定に失敗することがあります。エラー時は「判定不可」と表示させましょう。
=IFERROR(DETECTLANGUAGE(A2), "判定不可")
エラーで数式が止まらなくなるので、大量データの処理でも安心ですよ。
短文・空白・数字のみセルでの挙動
DETECTLANGUAGE関数にはいくつかクセがあります。実務で遭遇しやすいケースを押さえておきましょう。
空白セルを渡した場合
空白セルを渡すとエラーが返ります。IFERRORでラップするか、IF関数で事前にチェックしておきましょう。
=IF(A2="", "", DETECTLANGUAGE(A2))
空白の場合は何も表示せず、値があるときだけ判定する形ですね。
数字だけのセル
「12345」のように数字だけのセルは、言語判定ができず精度が落ちます。場合によっては英語と判定されたりエラーになったりします。
=IF(ISNUMBER(A2), "数値", IFERROR(DETECTLANGUAGE(A2), "判定不可"))
ISNUMBER関数(セルが数値かを判定する関数)で事前にフィルタしておくと、無駄な呼び出しを減らせますよ。
短すぎる文字列
1〜2文字だけのセルは、どの言語か特定しきれず誤判定になりやすいです。たとえば「OK」を渡すと英語と判定されますが、「あ」1文字だと判定がブレることがあります。
実務では最低でも5〜10文字以上の文字列を渡すと安定した結果が得られますよ。
複数言語が混在した文字列
「Hello こんにちは」のように複数言語が混ざっている場合、文字数の多い方、または先頭側の言語が返る傾向があります。混在データは事前に分割しておくのがおすすめです。
よくあるエラーと対処法
DETECTLANGUAGE関数で表示されるエラーと対処法をまとめました。
Text Too Long エラー
原因: 渡したテキストが長すぎる。Microsoft Translation Servicesが受け付ける文字数上限を超えています。
対処法: LEFT関数で先頭500文字程度に切り詰めてから渡しましょう。
=DETECTLANGUAGE(LEFT(A2, 500))
言語判定は冒頭の文章だけでも十分精度が出るので、この方法で問題ありません。
Error in Value エラー
原因: 空白セルや非テキスト値(エラー値など)を渡した。
対処法: IF関数で空白チェック、またはIFERRORでラップしましょう。
=IFERROR(DETECTLANGUAGE(A2), "判定不可")
Request Throttled エラー
原因: 日次のクォータ(Microsoftが定めるリクエスト回数制限)を超えた。大量のセルに数式を貼り付けると発生しやすいです。
対処法: 一度に処理する行数を分割するか、翌日にリトライしましょう。一括処理するときは値貼り付けで結果を固定しておくと安心ですよ。
判定 → 結果をコピー → 値のみ貼り付け
この流れで再計算を防げます。
#NAME? エラー
原因: DETECTLANGUAGE関数に対応していないバージョンのExcelで使っている。またはスペルミス。
対処法: Microsoft 365のサブスクリプションで最新版にアップデートしてください。Excel 2019・2021・LTSC 2024では使えません。
| エラー | 原因 | 対処法 |
|---|---|---|
| Text Too Long | 文字数超過 | LEFTで切り詰める |
| Error in Value | 空白・非テキスト | IFERRORでラップ |
| Request Throttled | 日次クォータ超過 | 分割処理・値貼り付け |
| #NAME? | 非対応バージョン | Microsoft 365に更新 |
エラーパターンは限られているので、落ち着いて対処すれば大丈夫ですよ。
まとめ
ExcelのDETECTLANGUAGE関数は、セルに入っている文字列の言語を自動判定してくれる便利な関数です。
この記事のポイントを整理します。
- 構文は
=DETECTLANGUAGE(テキスト)で引数は1つだけ - Microsoft 365のサブスクリプションとインターネット接続が必須
- 戻り値はISO 639-1の2文字コード(
jaenzhなど) - スピル対応なので範囲を渡して一括判定できる
- SWITCH関数と組み合わせれば日本語の言語名に変換できる
- TRANSLATE関数と連携すれば多言語データを一括翻訳できる
- 短文・空白・数字のみのセルは誤判定やエラーに注意
- エラー時はIFERRORでラップしておくと安心
まずは =DETECTLANGUAGE("Hello world") のようなシンプルな式から試してみてください。グローバル業務のデータ整理がぐっとラクになりますよ。
