Excel for Microsoft 365では、セル内のテキストをTRANSLATE関数で翻訳できます。たとえば、A1セルの英語をスペイン語に翻訳するなら、別のセルへ=TRANSLATE(A1,"en","es")と入力します。
元の言語が分からない場合は、先にDETECTLANGUAGE関数で言語コードを調べられます。実務では、元の文章・検出した言語・翻訳結果を別々の列に分けると、誤検出や翻訳エラーを確認しやすくなります。
Excelでセル内のテキストを翻訳する2つの関数
セル内テキストの翻訳では、次の2つの関数を組み合わせます。
| 関数 | 役割 | 基本形 |
|---|---|---|
TRANSLATE | 指定したテキストを別の言語へ翻訳する | =TRANSLATE(テキスト,元言語,翻訳先言語) |
DETECTLANGUAGE | テキストの言語を判定し、言語コードを返す | =DETECTLANGUAGE(テキスト) |
どちらもMicrosoft Translation Servicesを利用する、サービス依存型の関数です。Microsoftの公式ページでは、Excel for Microsoft 365、Excel for Microsoft 365 for Mac、Excel Mobileが対象製品として案内されています。([Microsoft サポート][1])
TRANSLATE関数でセルの文章を翻訳する方法
TRANSLATE関数の構文は次のとおりです。
=TRANSLATE(text,[source_language],[target_language])
各引数の意味は次のとおりです。
| 引数 | 内容 | 指定例 |
|---|---|---|
text | 翻訳するテキストまたはテキストが入力されたセル | A1、"Hello" |
source_language | 元の文章の言語コード。省略可能 | "en"、"es" |
target_language | 翻訳先の言語コード。省略可能 | "ja"、"es" |
第1引数には、セル参照だけでなく、引用符で囲んだ文字列も指定できます。([Microsoft サポート][1])
英語をスペイン語へ翻訳する
A1セルに英語の文章が入力されている場合は、翻訳結果を表示したいセルへ次の数式を入力します。
=TRANSLATE(A1,"en","es")
enは英語、esはスペイン語を表す言語コードです。
Microsoftが示している公式例では、A1セルの「Hello, World!」をこの数式でスペイン語へ翻訳します。数式は元のセルを書き換えるのではなく、数式を入力した別のセルに翻訳結果を返します。([Microsoft サポート][1])
セル参照を使わず文章を直接指定する
短い文章であれば、数式内に直接入力することもできます。
=TRANSLATE("Good morning","en","ja")
文章を直接指定するときは、必ず半角のダブルクォーテーションで囲みます。
ただし、実務では文章をセルに入力し、数式からセルを参照する方が管理しやすくなります。原文を修正したときに翻訳結果も更新されるためです。
元言語と翻訳先を省略するとどうなるか
TRANSLATE関数では、元言語と翻訳先言語を省略できます。
元言語だけを省略する
次の数式では、A1セルの言語を自動検出して日本語へ翻訳します。
=TRANSLATE(A1,,"ja")
元言語を省略すると、入力されたテキストから言語が自動検出されます。ただし、Microsoftは短いテキストについて、元言語が分かっている場合は言語コードを指定することを推奨しています。([Microsoft サポート][1])
「Bank」「Gift」「Chat」のような短い単語や、人名・商品名・地名などの固有名詞は、言語判定が難しい場合があります。元言語が判明しているデータでは、次のように明示する方が安定します。
=TRANSLATE(A1,"en","ja")
翻訳先言語を省略する
翻訳先言語を省略した場合は、システム言語が翻訳先として使われます。
=TRANSLATE(A1,"en")
この書き方は手軽ですが、利用者の環境によって翻訳先が変わる可能性があります。複数人で共有するブックや定型業務では、次のように翻訳先を固定するのが安全です。
=TRANSLATE(A1,"en","ja")
翻訳先を明示しておけば、Windows、Mac、モバイルなど、利用環境が異なる場合でも、数式の意図を読み取りやすくなります。翻訳先を省略するとシステム言語が使用されることは、Microsoftの公式仕様として説明されています。([Microsoft サポート][1])
DETECTLANGUAGE関数で元の言語を調べる方法
元の言語が分からない場合は、DETECTLANGUAGE関数を使用します。
構文は次のとおりです。
=DETECTLANGUAGE(text)
A1セルの言語を調べる場合は、次の数式を入力します。
=DETECTLANGUAGE(A1)
結果は「日本語」「スペイン語」といった言語名ではなく、jaやesなどの言語コードで返されます。
Microsoftの公式例では、A1セルに「Hola mundo!」が入力されている場合、=DETECTLANGUAGE(A1)の結果として、スペイン語を表すesが返されます。([Microsoft サポート][2])
検出結果を無条件に正解と判断しない
DETECTLANGUAGE関数は便利ですが、検出結果を常に正解として扱うのは避けましょう。
特に、次のようなデータは確認が必要です。
- 1語だけの短いテキスト
- 人名、会社名、製品名
- 複数の言語が混在する文章
- URL、記号、型番が中心の文字列
- 日本語と中国語の漢字が混在する短文
業務データでは、数件を目視確認してから列全体へ数式をコピーする方が安全です。
言語検出と翻訳を組み合わせる方法
元言語が不明な文章を日本語へ翻訳する場合は、2つの関数を組み合わせられます。
=TRANSLATE(A1,DETECTLANGUAGE(A1),"ja")
この数式では、最初にA1セルの言語を判定し、その言語コードをTRANSLATE関数の元言語として使用します。
ただし、実務では1つの数式にまとめるより、検出結果を別の列に表示する方法がおすすめです。
| 列 | 内容 | 数式例 |
|---|---|---|
| A列 | 元の文章 | 入力データ |
| B列 | 検出された言語 | =DETECTLANGUAGE(A2) |
| C列 | 日本語への翻訳 | =TRANSLATE(A2,B2,"ja") |
空白行には結果を表示したくない場合は、次のようにIF関数を組み合わせます。
B2セル:
=IF(A2="","",DETECTLANGUAGE(A2))
C2セル:
=IF(A2="","",TRANSLATE(A2,B2,"ja"))
この構成には、次の利点があります。
- 言語の誤検出に気付きやすい
- 翻訳元の言語コードを手動で修正できる
- どの段階でエラーが発生したか分かりやすい
- 元の文章を残したまま翻訳結果を比較できる
大量のデータを扱う場合ほど、処理を1列にまとめず、検出列と翻訳列を分ける方が確認しやすくなります。
TRANSLATE関数でエラーが出る場合の対処法
TRANSLATE関数とDETECTLANGUAGE関数では、入力内容やサービスの利用状況によってエラーが発生することがあります。
| エラー | 主な原因 | 対処方法 |
|---|---|---|
| Text Too Long | 入力テキストが長すぎる | 文章を複数のセルへ分割する |
| Error in Value | 入力が文字列ではない | 第1引数と参照先セルの値を確認する |
| Invalid Language | 言語コードが無効または未対応 | 対応する言語コードへ修正する |
| Request Throttled | 1日の利用上限を超えた | 時間を置いて再実行し、処理量を見直す |
Text Too Long:入力が長すぎる
1つのセルに長い文章を入力すると、テキストが長すぎることを示すエラーが発生する場合があります。
この場合は、文章を次のような単位で分割します。
- 見出しごと
- 段落ごと
- 1文または数文ごと
- 箇条書きの項目ごと
文字数だけを基準に途中で切断すると、文脈が失われて翻訳結果が不自然になることがあります。句点や段落の区切りを基準に分割するのが実用的です。
Microsoftの公式ページでは具体的な最大文字数が示されていないため、「何文字まで」と固定して運用するのではなく、エラーが出た文章を意味のまとまりごとに分けてください。([Microsoft サポート][1])
Error in Value:文字列以外が渡されている
翻訳対象には文字列を指定する必要があります。
次のような点を確認します。
- 参照先セルに文字が入っているか
- 数式の第1引数が正しいセルを参照しているか
- 引用符で囲むべきテキストを囲んでいるか
- エラー値が入ったセルを参照していないか
たとえば、文章を直接指定する場合、次の数式では引用符が必要です。
=TRANSLATE("Hello","en","ja")
公式情報でも、両関数はテキストを引数として受け取り、非テキスト値では値に関するエラーが発生すると説明されています。([Microsoft サポート][1])
Invalid Language:言語コードが正しくない
元言語または翻訳先に、未対応の言語コードや誤ったコードを入力すると、Invalid Languageエラーが発生します。
たとえば、日本語を指定するときは言語名の"Japanese"ではなく、言語コードの"ja"を使用します。
=TRANSLATE(A1,"en","ja")
言語コードはすべてが単純な2文字とは限りません。推測で入力せず、Microsoftが公開している対応言語とコードを確認してください。対応言語は追加または削除される可能性があります。([Microsoft サポート][1])
Request Throttled:1日の利用上限を超えた
Request Throttledは、翻訳機能の日次利用枠を超えたときに発生するエラーです。パソコンやExcelのインストール不良を示すものではありません。([Microsoft サポート][1])
このエラーが出た場合、Excelの再インストールやOfficeの修復を最初に行う必要はありません。次のように対応します。
- 時間を置いて再実行する
- 不要な翻訳数式を削除する
- 同じ文章を何度も処理していないか確認する
- 翻訳対象を必要な行に絞る
- 確定した結果を値として保存する運用を検討する
公式ページでは具体的な日次回数や復旧時刻は示されていません。そのため、「何時になれば必ず解除される」とは断定せず、後で再実行してください。
IFERRORでエラーを隠す前に原因を確認する
エラー表示を整えるため、次のようにIFERROR関数を使うこともできます。
=IFERROR(TRANSLATE(A2,B2,"ja"),"要確認")
ただし、最初からIFERRORでエラーを隠すと、次の原因を区別できなくなります。
- テキストが長すぎる
- 言語コードが間違っている
- 入力値が文字列ではない
- 日次利用枠を超えている
数式を作成した直後は、まず元のエラーを確認してください。原因を解消した後で、利用者向けの表示を整える目的でIFERRORを追加する方が安全です。
業務で使うときの運用上の注意点
元の文章を上書きしない
翻訳結果は、必ず元データとは別の列に表示するのがおすすめです。
翻訳が不自然だった場合や、言語の誤検出が起きた場合でも、原文が残っていれば比較して修正できます。
翻訳先の言語コードを固定する
翻訳先を省略するとシステム言語が使われます。自分だけで使うブックでは便利ですが、組織内で共有する場合は結果の言語を固定しましょう。
日本語へ統一するなら、次のように"ja"を明示します。
=TRANSLATE(A2,B2,"ja")
重要な文章は必ず人が確認する
機械翻訳は、文脈、専門用語、組織固有の表現を正確に反映できないことがあります。
次のような文章は、翻訳結果をそのまま公開せず、人による確認を行ってください。
- 契約書や規約
- 医療・法律・財務に関する文章
- 顧客への正式な回答
- Webサイトの重要な案内
- 製品仕様や安全上の注意
- 行政手続きや申請条件
組織の情報取扱ルールを確認する
TRANSLATEとDETECTLANGUAGEは、Microsoft Translation Servicesを利用するサービス依存型の関数です。機密情報や個人情報を含む文章へ利用する場合は、組織のセキュリティーポリシーやクラウドサービスの利用ルールを確認してください。([Microsoft サポート][1])
確定版は値として保存する方法も検討する
翻訳内容を確認し、今後変更する必要がない場合は、翻訳結果をコピーして「値として貼り付け」する運用も有効です。
ただし、値に変換すると原文の変更に追随しなくなります。作業中は数式のまま保持し、公開版や提出版を作成する段階で値に変換すると管理しやすくなります。
対応言語や翻訳結果は変わる可能性がある
TRANSLATE関数とDETECTLANGUAGE関数は、固定された辞書だけで動作する関数ではなく、翻訳サービスを利用します。
Microsoftは、言語の追加や削除によって、対応言語や結果が変わる可能性があると案内しています。過去に作成したブックでも、重要な翻訳結果は必要に応じて再確認してください。([Microsoft サポート][1])
また、公式ページに明記されていない最大文字数、具体的な日次利用回数、未掲載製品での対応状況などを前提に業務設計するのは避けましょう。
Excelでセルを翻訳するときのおすすめ手順
実務では、次の順序で進めるとエラーや誤翻訳を見つけやすくなります。
- A列へ元の文章を残す
- B列で
DETECTLANGUAGEを使って言語を確認する - 短文や固有名詞の検出結果を目視確認する
- C列で
TRANSLATEを使って翻訳する - 翻訳先の言語コードを明示する
- エラーが出た行だけ原因を確認する
- 重要な文章は人が内容を確認する
- 確定後、必要に応じて結果を値として保存する
最初に試す数式は、次の2つです。
=DETECTLANGUAGE(A2)
=TRANSLATE(A2,B2,"ja")
元言語が最初から分かっている場合は、言語検出を省略して直接指定します。
=TRANSLATE(A2,"en","ja")
言語を明示できるデータでは明示し、不明なデータだけDETECTLANGUAGEで確認する運用にすると、数式が分かりやすくなり、誤検出にも気付きやすくなります。
[1]: https://support.microsoft.com/en-us/excel/functions/translate-function “TRANSLATE function | Microsoft Support”
[2]: https://support.microsoft.com/en-us/excel/functions/detectlanguage-function “DETECTLANGUAGE function | Microsoft Support”

コメント