BookTranslator
BookTranslator

数式やドロップダウンを壊さずにExcelスプレッドシートを翻訳する方法

セル単位の翻訳ツールが見落とす.xlsx内のテキスト(数式内のテキスト、リッチテキスト、リンク、グラフ、マクロ)を見つけ、壊れる可能性のあるドロップダウンやコードを修正し、無料のスクリプトとテスト用ワークブックで結果を確認する方法を解説します。

BookTranslator

BookTranslator Team

26 分で読了

Excelワークブック全体を翻訳するには、セルを1つずつ翻訳するのではなく、.xlsxファイルをドキュメント翻訳ツールにアップロードします。Excel自体の「校閲」>「翻訳」コマンドは選択したテキストに対して機能します(Microsoftサポート)。これはラベル1つなら問題ありませんが、価格表では遅すぎます。ファイル翻訳ツールはすべてのテキストセルを読み取り、翻訳し、同じアドレスに書き戻すため、数式、数値、日付は元の場所に残ります。

しかし、どのテキストが読まれなかったかは教えてくれません。数式内に入力されたテキスト、1つの単語だけ太字のセル、リンク、メモ、グラフのタイトル。セル単位の翻訳では、これらすべてが元の言語のまま返ってくることがあります。さらに、2つの問題が発生する可能性があります。許可された値が翻訳されていないドロップダウンと、翻訳されてしまった製品コードです。

私たちは、これらの各場所にテキストを配置した2シートのテスト用ワークブックを作成し、テキストがどこにあるかを一覧表示する無料チェッカーを作成し、BookTranslatorが使用するスプレッドシート処理をローカルで再現してワークブックを実行しました。このガイドでは、何が返ってきたか、アップロード前に変更すべき点、翻訳されたファイルを確認する方法を紹介します。

簡単な答え:ワークブックで翻訳されるもの

テキストの場所テストからの例BookTranslatorで翻訳されるか?対処法
ヘッダー行を含むプレーンテキストのセル「青いノート」「価格」はいなし
数値、日付、ブール値4.5, 2026-10-30そのまま対象市場に合わせて数値形式を確認
数式=C2*D2そのままなし
数式内のテキスト=IF(D2>5,"In stock","Low stock")いいえ単語をセルに移動する(ステップ2参照)
書式が混在するセル「限定版ペン」いいえ、セル全体がスキップされます先に書式をクリアするか、手動で翻訳してください
ハイパーリンクセル「商品ページ」いいえ翻訳後にリンクテキストを編集してください
ドロップダウンセル内の値「文房具」はい、ただしドロップダウンリストは翻訳されませんリストを修正するか、セルが無効になります
文字を含むコード「A-77」「B-09」翻訳者に送信されます翻訳後に確認してください
数字または記号のみのコード"00123"そのまま維持されますなし
メモとコメント「リリース前に仕入先名を確認」いいえ手動で翻訳するか、削除してください
シート名と名前付き範囲「Products」、PriceRangeいいえ、シート間の数式が機能し続けるためです数式を確認した上で、どうしても必要な場合のみ手動でシート名を変更してください
グラフとマクロ棒グラフ、VBAプロジェクトテストでは翻訳後のファイルから削除されました元のファイルを保持し、後で再構築してください(下記参照)

古い .xls ファイルは受け付けられません。Excelで開いて .xlsx として保存してからアップロードしてください。マクロ有効の .xlsm ファイルは受け付けられますが、アップロードする前にマクロのセクションをお読みください。翻訳後のファイルにはマクロが含まれず、ダウンロードしたファイルの拡張子が .xlsm のままの場合は、開く前に .xlsx に名前を変更してください。

ステップ1:ワークブックでチェッカーを実行する

check_xlsx_text.py をダウンロードし、ファイルに対して実行します:

python3 check_xlsx_text.py "Price list.xlsx"

Python 3 のみが必要で、ファイルを変更せずに読み取ります。以下はサンプルワークブックのサマリーです:

Counts by location:
  cell         code, ID or address        2
  cell         link text                  1
  cell         mixed formatting           1
  cell         plain text                 15
  comments     comment or note text       1
  dropdown     list of allowed values     1
  formula text text inside a formula      6
  sheet        sheet name                 2
  workbook     defined name               1

Plain text cells (translated by a cell-by-cell translator): 15
Items that need a decision before you upload: 12

カウントの下に、各項目がシートとセルとともに一覧表示されます(例:Products!E2 formula text 'In stock')。このリストをステップ2のToDoリストとして使用してください。ワークブックにグラフ、テキストボックス、ピボットテーブル、マクロプロジェクトがある場合、それらもカウントに表示されます。

README にはサンプルワークブックの説明、ファイルハッシュの一覧、およびそれをビルドするスクリプトへのリンクが記載されているので、テストを再現できます。

テストワークブックに何が起こったか

サンプルワークブックを、BookTranslatorのスプレッドシートハンドラーが使用するコード(2026-11-01に同じライブラリExcelJS 4.4.0を使用してローカルで再現)で実行しました。実際の翻訳の代わりに、各セルのテキストの前に「[DE]」を追加するプレースホルダーを使用しました。これにより言語モデルをテストから除外し、結果はファイル処理が送信、保持、削除するものだけを示します。

ハンドラーは各シートをセルごとに読み取ります。セルがプレーンテキストの値を保持している場合にのみ翻訳のために送信し、数字、句読点、記号のみで構成されるテキストはスキップします。セルグリッド内のその他すべては変更されずにコピーされます。その後、BookTranslatorは翻訳済みワークブックとバイリンガルワークブックの2つのファイルを返します。

翻訳済みワークブック

これが使用するファイルです。6つの数式、7つの数値と日付、通貨と日付の書式、結合セル、ノート、ドロップダウンルール、名前付き範囲はすべて変更されずに返されました。9つのヘッダーセルとその他のプレーンテキストセルはその場で翻訳されました。3つの結果に注意が必要です:

数式内のテキストはソース言語のままです。 Status列は =IF(D2>5,"In stock","Low stock") を使用していました。数式はテキストセルではないため、ハンドラーはそれを読み取らず、「In stock」はすべての行で英語のままです。& や CONCAT で結合されたテキスト、および HYPERLINK 内のテキストにも同じことが当てはまります。

翻訳されたドロップダウン値がリストと一致しなくなります。 セルH2には「Stationery, Office, Art」を許可するドロップダウンがありました。セルの値は翻訳されましたが、リストは検証ルールに保存されており、セルには保存されていないため、翻訳されませんでした。チェッカーの比較モードは次のように報告しました:

Problems: 3
  Products!A3: code changed: 'A-77' -> '[DE] A-77'
  Products!A4: code changed: 'B-09' -> '[DE] B-09'
  Products!H2: '[DE] Stationery' is not in its dropdown list ['Art', 'Office', 'Stationery']

Excelは検証ルールに違反する値を保持しますが、次にドロップダウンを開く人には古い選択肢しか表示されず、「データ > 無効なデータを丸で囲む」でセルにフラグが付けられます。

文字を含むコードは翻訳者に送信されます。 「00123」は数字のみで構成されているためスキップされました。「A-77」と「B-09」は文字を含むため送信されました。コードが変更されずに返されるかどうかはモデルに依存し、ファイル処理では保護されません。SKUが「A-77-Artikel」として返されると、それを使用するすべてのルックアップが壊れます。

バイリンガルワークブック

バイリンガルファイルは、少なくとも1つの翻訳されたセルがあった各列の右側に翻訳列を挿入し、「Name (Translated)」などのヘッダーを付けます。セルの値は新しい列に移動しますが、セルの書式は移動せず、数式も更新しません。テストでは:

  • 価格の書式 $#,##0.00 は列Cに残り、そこには製品名が入り、価格は書式なしで列Eに移動しました;
  • 日付の書式はG列に残り、そこには数量が入っているため、数量10が日付として表示されました。
  • =C2*D2 はK列に移動しましたが、依然としてC2とD2を参照しており、そこには製品名とその翻訳が入っているため、45を返すことはできません。
  • Summaryシートでは、=SUM(Products!F2:F4) が空の翻訳列を合計するようになりました。

つまり、バイリンガル版のブックは原文と翻訳を並べて読むためのものであり、計算用ではありません。編集したり、数式をコピーしたりしないでください。

グラフとマクロ

ブックの別のコピーに、グラフとマクロプロジェクトを追加し、Excelが保存する形式で保存しました。どちらも翻訳版にもバイリンガル版にも含まれていませんでした。ExcelJSはワークシート、スタイル、共有テキスト、画像、テーブル、コメントの読み書きは行いますが、グラフパーツやVBAプロジェクト用のコードは持っていないため、保存時にそれらを除外します。同じコードにはピボットテーブル用の機能もないため、ピボットテーブルも失われると予想されますが、テストはしていません。また、このハンドラは出力を .xlsx ファイルとして保存するため、マクロを保持できません。

テストのもう一つの限界として、サンプルブックはExcelJS自体で作成しました。これは書式、結合、入力規則を保持する上で最も都合の良いケースです。Excelで保存されたブックには、ExcelJSがモデル化していない機能が含まれている可能性があるため、同じようにきれいな結果になると仮定せず、以下の比較手順を自分のファイルで実行してください。

ステップ2:アップロード前にブックを準備する

コピーで作業します。チェッカーが変更すべきセルを教えてくれます。

  1. 数式内のテキストをセルに移動する。 単語を小さな「Labels」シートに置き、数式からそれを参照します:=IF(D2>5,Labels!$A$1,Labels!$A$2)。ラベルセルはプレーンテキストなので翻訳され、すべての数式が翻訳を取得します。同じフレーズが列全体に繰り返される傾向があるため、この1つの変更で通常「数式内テキスト」のカウントのほとんどが解決します。
  2. ドロップダウンリストをセルに移動する。 データ > データの入力規則で、入力値の種類を「リスト」にし、元の値として直接入力したリスト(Stationery,Office,Art)からLabelsシートの範囲(=Labels!$B$1:$B$3)に変更します。リストの値は、それを使用するセルと一緒に翻訳されます。後でいくつかのセルを確認してください。モデルが「Stationery」を両方の場所で同じように翻訳した場合にのみ、ドロップダウンは翻訳された値を受け入れます。
  3. 混在した書式をクリアする。 1つの単語だけが太字や色付きのセルは、書式付きランとして保存され、完全にスキップされます。セルを選択してホーム > クリア > 書式のクリアを選ぶか、再入力してから、翻訳後に太字を再適用します。このようなセルが多い場合は、最初にメモしておいてください。
  4. メモとコメントの扱いを決める。 これらは翻訳されません。翻訳サービスに送りたくないレビューメモは削除し、残りは手動で翻訳します。
  5. マクロブックを .xlsx として保存する。 .xlsm をマスターとして保持します。.xlsx コピーを翻訳し、その後、翻訳されたテキスト列をマスターにコピーして戻す(数式を上書きしないように、テキスト列のみを値として貼り付け)か、VBAモジュールをエクスポートして翻訳済みファイルにインポートします。
  6. グラフは後回しにする。 グラフのテキストはわずかです:タイトル、軸ラベル、そして通常はヘッダーセルから取得する凡例です。同じ範囲から翻訳済みブックでグラフを再作成するか、翻訳されたテキスト列を元のブックに貼り付けて戻し、グラフやピボットテーブルが自動的に更新されるようにする方が速いことがよくあります。

ステップ3:ファイル全体を翻訳する

ドキュメント翻訳ページで .xlsx をアップロードし、対象言語を選択して、支払い前に表示される価格を確認します。ファイル全体をアップロードすると、1つのタスクで全シートのすべてのテキストセルが翻訳されるため、3行目と3,000行目で製品名を同じに保ちやすくなります。翻訳用語集の作成に関するガイドでは、変えてはならない用語を固定する方法を説明しています。

タスクが完了すると、履歴ページから両方のダウンロードが提供されます。翻訳済みブックを使用してください。バイリンガルブックは、両方の言語を読める人と文言を確認する場合にのみ開いてください。

Googleスプレッドシートで作業する場合、他に2つの方法があります。Google翻訳の「ドキュメント」タブは最大10 MBの .xlsx ファイルを受け付けます(Google 翻訳 ヘルプ)。Google ドキュメント翻訳ガイドでは、そのオプションを比較しています。また、スプレッドシートには GOOGLETRANSLATE(text, source_language, target_language) 関数(Google ドキュメント エディタ ヘルプ)があり、ソースの隣の新しい列にフィルダウンできます。これは短いラベルの1列には便利ですが、結果は数式なので、シートを共有する前に値として貼り付けてください。DeepLもドキュメントを翻訳します。そのドキュメント制限が実際に何を意味するかをご覧ください。何を使用するにしても、まずソースでチェッカーを実行してください。数式内のテキスト、リンク、グラフは、どのツールがファイルを読み取っても同じ場所にあります。

ステップ4:翻訳済みブックを確認する

  1. 比較モードを実行する。 ソースと翻訳済みファイルを並べます:

    python3 check_xlsx_text.py --compare "Price list.xlsx" "Price list (translated).xlsx"
    

    すべての数式、数値、日付が変更されていないこと、文字を含むコードが正確に元のまま返されていること、すべてのドロップダウン値がそのリストに含まれていることを確認します。翻訳済みブックでのみ使用してください。バイリンガルファイルは列がずれるため、ほぼすべてのセルが報告されます。

  2. 再計算する。 ラベルを修正した後も数式が古いテキストを表示する場合は、F9キーを押すか、数式 > 再計算を選択します。

  3. 残りを翻訳する。 ステップ1のチェッカーのリストを使用します:リンクテキスト、メモ、グラフのタイトル、書式をクリアしたセルなどです。

  4. 切り詰められたテキストを確認する。 翻訳はソースより長くなることが多く、短い文字列ほど伸び率が大きくなります。W3CはIBMのガイドラインを引用し、10文字までのテキストでは英語からヨーロッパ言語への平均拡張率が200~300%になると述べています(W3C)。列ヘッダーは短いので、切り詰められている箇所は列幅を広げるか、折り返して表示をオンにしてください。

  5. 数値と日付の表示を確認する。 値自体は変更されていませんが、ドイツの読者には「4.50」を「4,50」と表示する必要があるかもしれません。これはセルの書式または地域設定の問題であり、翻訳の問題ではありません。

  6. 関数名を「修正」しないでください。 同僚のフランス語版ExcelでSUMの代わりにSOMMEと表示されていても、それはExcelが独自のローカライズされた関数名を表示しているだけであり、数式は同じです。

  7. 右から左に読むシートを設定する。 アラビア語、ヘブライ語、ペルシア語、ウルドゥー語の場合は、ページレイアウト > シートを右から左に をオンにし、セルの配置を確認してください。

  8. 流暢な読者にレビューしてもらう ことを、価格表や製品カタログなど顧客に渡す資料の場合は特に検討してください。機械翻訳は優れた下書きではありますが、最終版ではありません。

CSVおよびTSVファイル

.csvファイルには数式、書式、ドロップダウンがないため、上記の問題のほとんどは発生しません。ただし、次の3点が異なります。

  • ヘッダー行は翻訳されません。 処理ツールは最初の行をヘッダーとして扱い、データ行のみを翻訳します。ヘッダーは手動で翻訳するか、アップロード前にデータ行にコピーし、後で元に戻してください。
  • 列は全体として翻訳されます。 列内のいずれかのセルに文字が含まれている場合、その列の文字を含むすべてのセルがコードも含めて送信されます。比較モードは.xlsxのみを読み取るため、CSVのコード列は手動で確認してください。両方のファイルから1つのシートにコピーし、=EXACT(A2,B2)で2つの列を比較します。
  • CSVはカンマ区切りで返されます。 ソースがどの区切り文字を使用していても、翻訳されたCSVはカンマを使用します。.tsvファイルはタブを保持します。私たちのテストでは、セミコロン区切りのCSVがカンマ区切りで返され、「4,50」のような小数点カンマは引用符内に保持されました。ファイルはバイトオーダーマークなしのUTF-8です。Microsoftによると、Excelはそのマークがある場合UTF-8 CSVを通常どおり開きますが、ない場合はデータ > データの取得 > テキスト/CSVからインポートすることを推奨しています(Microsoft Support)。ファイルをダブルクリックしてアクセント記号が文字化けする場合は、その方法でインポートしてください。

データが数式を含むワークブックにある場合は、.xlsxを翻訳してください。CSVにエクスポートして翻訳すると、すべての数式が失われます。

よくある問題

問題考えられる原因対処方法
列全体が「在庫あり」のまま単語がIF数式内にあるラベルセルに移動し、数式がそのセルを参照するようにする
ドロップダウンが翻訳された値を拒否する許可された値が入力規則に直接入力されている規則のソースをセル範囲に変更し、その範囲を翻訳する
製品コードが変更された文字が含まれているため、翻訳者に送信されたソースから修正する。納品ごとに比較モードを実行する
1つのセルがまったく翻訳されていない書式が混在しているか、リンクになっている書式をクリアするかリンクテキストを編集してから、再翻訳するか手動で修正してください
グラフやマクロが消えているファイルを書き換えるために使用したライブラリがそれらを保存しない.xlsx のコピーを翻訳し、翻訳されたテキストを元のファイルに戻してください
バイリンガルファイルで合計が間違っている追加された列が値だけをずらし、数式や書式はずらさない計算には翻訳済みのワークブックを使用してください
翻訳されたCSVでアクセント文字が文字化けするExcelが誤ったエンコーディングを推測したデータ > データの取得 > テキスト/CSVからインポートしてください
アップロードが拒否されるファイルが .xls であるか、開くのにパスワードが必要開くためのパスワードなしで通常の .xlsx として保存してください(シート保護のみなら問題ありません)

同じ考え方はスライドにも当てはまります。PowerPointプレゼンテーションも翻訳者がスキップする場所にテキストを保持しており、その記事のチェッカーもこの記事のものと同じように機能します。

関連記事

数式やドロップダウンを壊さずにExcelスプレッドシートを翻訳する方法