ByteScope

Excel Compare

2つの Excel を並べて、どのセルが変わったかを確認。値の変更、数式が消えた箇所、型の違いをセル単位で色分けし、行はキー列・自動・位置のいずれかで対応付け。ファイルは外に出ません。

2 つのブックはお使いのパソコン上の worker で読み込み・比較します。アップロードはせず、セルの値もシート名もファイル名もどこにも送りません。

A · 元のファイル

ブック A(元のファイル)をここにドロップ

またはクリックして選択(.xlsx / .xlsm)

B · 変更後

ブック B(変更後)をここにドロップ

またはクリックして選択(.xlsx / .xlsm)

比較するもの・しないもの

  • 比較するのはファイルに保存された結果で、数式は再計算しません。自動で再計算しないソフトで保存したファイルは、古い結果が入っていることがあります。
  • フォント、色、罫線、条件付き書式、データの入力規則、グラフ、ピボットテーブル、マクロ、コメントは比較しません。表示形式とセルの結合範囲は比較します。
  • 自動合わせは推測なので、大きく編集された表では対応を間違えることがあります。どの方式を使ったかは結果の上に表示します。
  • 数式は相対的な位置で比べるため、行の挿入で下の参照がずれても(C12*D12 → C13*D13)変更には数えません。ただし $ 付きの絶対参照がずれた場合($D$9 → $D$10 など)は、数式の変更として表示します。
  • 日付は YYYY-MM-DD で表示します。それ以外の表示形式(小数点以下の桁数、桁区切り、%)は、ここに表示する文字には反映しません。
  • 古い .xls ファイルとパスワード付きのブックには対応していません。

関連ツール: CSV Explorer · Office Document Inspector · Word Compare

このツールについて

同じ報告書の「最終版」と「本当の最終版」、同じ台帳を2回書き出したもの、同僚から戻ってきたシート——知りたいのは「結局どこが変わったのか」です。.xlsx か .xlsm を2つドロップすると、ページの中で開いて比較します。シートは名前で対応付け(名前が合わなければ順番で対応付け、手動で付け替えも可能)、非表示シートも隠しシートも対象です。結果は左右に並べたグリッドに差分を色と記号で表示し、シートごとに「同じセル/違うセル/追加行/削除行/数式の変更数」を集計。差分だけを表示する絞り込みと、前後の差分へのジャンプも付いています。差分一覧は CSV(sheet, cell, kind, a_value, b_value, a_formula, b_formula)で保存するか、JSON としてコピーできます。

どちらのファイルもブラウザから出ません。台帳、給与表、価格表は、見知らぬサーバーに置きたくないものの代表格です。だから2つのブックはディスクから読み込み、あなたのマシン上の Web Worker の中で展開して比較します。アップロード先はそもそも存在せず、ページが送るのは「比較を実行した・成功したか・どの対応付けモードだったか」だけ。ファイル名もシート名もセルの値も含まれません。

値・数式・型を別々に表示

対応付いたセルは3つの観点で比べ、それぞれ別の記号を付けます。値はファイルに保存されたキャッシュ値(共有文字列は解決済み)。数式は <f> のテキストで、共有数式は展開してからセルごとの実際の数式を比べます。型は数値・文字列・ブール・エラーの4種類で、文字列の 100 と数値の 100 は「一致」ではなく「型の変更」です。いちばん見逃したくないのは「値は同じなのに数式が消えた、または変わった」セル。数式の上に結果の数字を貼り付けたときの典型的な痕跡で、今日は同じに見えても明日から更新されなくなります。グリッドではこれを「数式のみ変更」として独立した記号で示すので、何千もの同一セルの中に埋もれません。数値は数値として比較(1.0 と 1 は同じ)、表示テキストで比較する切り替えと、初期値 0 の許容誤差も用意しています。日付は内部的には「日付書式の付いた数値」なので、シリアル値で比較して日付として表示します。ただの数値から日付書式に変わったセルは、値の変更ではなく表示形式の変更として報告されます。

行の対応付けは3通り

1行挿入しただけで、それ以降の行が全部「違う」と報告される——表計算の比較ツールがいちばん嫌われる場面です。そこで対応付けのモードは自分で選ぶ形にし、結果の先頭に今どのモードかを必ず表示します。キー列(推奨)は、注文番号や ID、SKU などあなたが選んだ1列以上をキーにして行を対応付け、結果を「両方にあるが内容が違う」「A にだけある」「B にだけある」「キーが重複」の4つに分けます。自動は各行をハッシュにして行の並びに Myers 差分をかけ、挿入・削除された行を見つけてから、対応した行どうしをセル単位で比べます。位置は N 行目と N 行目をそのまま比べる方式で、レイアウトが固定された帳票向きです。列は見出し行(最初の空でない行、または指定した行)のテキストで対応付け、見出しが合わない列は位置で対応付けます。自動対応付けは推測です。ほとんどの行が変わっているシートでは組み合わせを間違えることがあり、15 秒の時間予算と差分数の上限を超えると、黙って位置対応付けに切り替えるのではなく、処理を止めてキー列か位置モードへの切り替えを提案します。

比べるもの、比べないもの

比較に使うのはファイルに保存されたキャッシュ値で、再計算はしません。手動計算で保存されたブック、「開くときに再計算」のフラグが立ったブック、キャッシュ値を持たない数式セルがあるブックは古い数値を抱えている可能性があり、検出したときはページに警告を出します。数値は有効数字 15 桁まで一致すれば同じとみなします。Excel 自身が保持するのも 15 桁で、ソフトによって同じ値を 15 桁で書くか 17 桁で書くかが違うため、末尾の桁は変更ではなくノイズだからです。フォント、色、罫線、条件付き書式、データの入力規則、グラフ、ピボットテーブル、マクロ、コメントは比較しません。書式のうち報告するのは「表示形式の違い」と「結合セル範囲の違い」の2つだけです。暗号化されたブックと旧形式の .xls は、理由を示したうえで受け付けません。

よくある質問

Excel ファイルは比較のためにアップロードされますか?

いいえ。2つのブックはディスクから読み込み、ページ内の Web Worker で展開・解析・比較します。処理を行うサーバーはなく、タブを閉じればどちらのファイルのコピーも残りません。匿名の利用イベントに記録されるのは「比較を実行した・成功したか・どの対応付けモードか」だけです。

途中に1行挿入しただけなのに、それ以降の行が全部「変更」にならないのはなぜ?

比較の前に行を対応付けているからです。自動モードでは各行をハッシュにして Myers 差分で挿入・削除行を見つけるので、挿入より下の行は本来の相手と組になります。キー列モードなら、あなたが選んだキーで組を決めるのでさらに確実です。N 行目と N 行目をそのまま比べるのは位置モードだけ。レイアウトが固定の帳票に使い、リストには使わないでください。

「数式のみ変更」とはどういう意味ですか?

キャッシュ値は両方のファイルで同じなのに、数式が違うセルです。片方が =SUM(B2:B9) で、もう片方がその数式がかつて出した数字になっているケースがほとんどです。今日は同じに見えて、明日から静かに更新が止まる——だから「変更なし」に紛れ込ませず、専用の記号を付けています。

両方とも 100 と表示されているセルが「違う」と出るのはなぜ?

たいていは型が違うからです。片方は文字列の 100、もう片方は数値の 100、あるいは片方がブール値でもう片方が文字列の TRUE。グリッド上は同じに見えても、合計や検索では別物として振る舞います。同じ扱いにしたいときは「表示テキストで比較」をオンにしてください。

別々のソフトで保存した2つのファイルで、ほぼすべての数値に差分が付きます。

まず許容誤差と 15 桁ルールを確認してください。有効数字 15 桁まで一致する数値はすでに同じとみなしており、ソフトごとに生じる 16〜17 桁目のノイズはこれで吸収されます。それでも差が残るなら、片方のファイルが古いキャッシュ値を抱えている可能性があります。手動計算で保存されている、「開くときに再計算」のフラグがある、キャッシュ値のない数式セルがある——いずれかを検出するとページが警告します。

自動対応付けが止まって、別のモードを選ぶよう言われました。なぜ?

自動対応付けは行の並びに Myers 差分をかけるため、コストは差分の数に比例して増えます。2つのシートの違いが多すぎるか、15 秒の時間予算を使い切ると、当て推量の結果を返したり黙って位置対応付けに切り替えたりせず、処理を止めます。キーになる列があればキー列モード(速くて正確)、レイアウトが固定なら位置モードを選んでください。

書式やグラフ、マクロも比較しますか?

いいえ。フォント、塗りつぶし、罫線、条件付き書式、データの入力規則、グラフ、ピボットテーブル、コメント、VBA は今回のバージョンでは対象外です。書式の違いとして報告するのは「表示形式の変更」と「結合セル範囲の変更」だけ。.xlsm は問題なく開けますが、マクロは比較に含まれません。

非表示シートも含まれるのはなぜ?

変わった前提条件は、たいてい非表示シートに隠れているからです。非表示(hidden)も隠し(veryHidden)も通常のシートと同じように比較し、非表示フラグ自体の変化も報告します。片方では見えていて、もう片方ではしまい込まれたシートが見逃されることはありません。