# Excel Compare

> 把兩個 Excel 檔拖進瀏覽器，直接看哪些儲存格變了：值、公式、型別分開標示，列用鍵欄、自動或位置對齊，公式被換成數字也抓得出來。檔案不上傳，在你的電腦裡完成。

- URL: https://bytescope.dev/zh-Hant/excel-compare/
- Locale: zh-Hant · Also: [en](https://bytescope.dev/en/excel-compare.md) · [ja](https://bytescope.dev/ja/excel-compare.md)
- Runs: 兩個活頁簿都在你自己電腦上的 worker 裡讀取、比對——不會上傳，儲存格內容、工作表名稱和檔名都不會送到任何地方。
- Requires: Any modern browser (Chrome, Edge, Firefox, Safari), desktop and mobile.
- Updated: 2026-09-08

## What it does

同一份報表的「最終版」和「真的最終版」、同一本帳匯出兩次、同事改過再傳回來的表——你只想知道到底改了哪裡。把兩個 `.xlsx` 或 `.xlsm` 拖進來，就在頁面裡打開並比對：工作表先用名稱配對（名稱對不上就依順序配，也可以手動改配對），隱藏和深度隱藏的工作表照樣比。結果是左右並排的格線，每個差異都用顏色加圖示標出；每張工作表各有一份摘要——相同和不同的儲存格數、新增列、刪除列、公式變更數——還有「只看差異」的篩選和上一個／下一個差異的跳轉。差異清單可以匯出 CSV（`sheet, cell, kind, a_value, b_value, a_formula, b_formula`），或直接複製成 JSON。

兩個檔案都不會離開你的瀏覽器。帳本、薪資表、報價單正是你最不想放到別人伺服器上的東西，所以兩本活頁簿都是從你的磁碟讀進來，在你電腦上的 Web Worker 裡解開、比對。頁面根本沒有上傳端點，回報的只有「跑了一次比對、成功與否、用的是哪種對齊模式」——沒有檔名、沒有工作表名稱、沒有任何一格的值。

### 值、公式、型別分開標

每一對儲存格比三件事，各自有自己的標記。值，是檔案裡存的快取結果（共用字串已經解開）。公式，是 `<f>` 的文字，共用公式會先展開，所以每一格顯示的都是它實際帶的公式。型別，分數字、文字、布林、錯誤四種——文字的 `100` 和數字的 `100` 會被標成型別變更，不算相同。最值得注意的組合是「值沒變、公式卻不見或變了」：這就是有人把計算結果貼回去蓋掉公式的樣子，今天看起來一樣，明天就不會再更新。格線會把它標成「只有公式變更」，不會淹沒在幾千個相同的格子裡。數字用數值比（`1.0` 等於 `1`），也可以切成用顯示文字比，另外有一個預設為 0 的容差選項。日期在檔案裡其實是「帶日期格式的數字」，所以用序號比、顯示時換成日期；一格從純數字變成日期格式，會被標成數字格式變更，而不是值變更。

### 列對齊有三種方式

插入一列之後，後面每一列都被報成不同——這是試算表比對工具最常被罵的地方。所以對齊模式由你選，而且結果最上方一定寫明目前用的是哪一種。鍵欄（推薦）：挑一欄或多欄當鍵，例如訂單編號、ID、料號，依鍵把列配起來，結果分成「兩邊都有但內容不同」「只在 A」「只在 B」「鍵重複」四類。自動：把每一列算成雜湊，對兩邊的列序列跑 Myers diff，先找出插入和刪除的列，再把配上的列逐格比。位置：第 N 列對第 N 列，適合版面固定的表單。欄用標題列（第一個非空列，或你指定的那一列）的文字配對，標題對不上的欄改依位置配。自動對齊是推測：大部分列都變過的表可能會配錯；它有 15 秒的時間預算和差異數上限，超過就停下來，建議你改用鍵欄或位置模式——不會默默退回位置對齊。

### 比什麼，不比什麼

比對用的是檔案裡存的快取值，不會重新計算。用手動計算存檔的活頁簿、標了「開啟時重算」的活頁簿、或是有公式卻沒有快取值的格子，數字可能是舊的；偵測到這些情況時頁面會提醒。兩個數字只要前 15 位有效數字一致就算相同——Excel 本身也只保留 15 位，而不同軟體存同一個值有的寫 15 位、有的寫 17 位，尾巴那幾位是雜訊，不是變更。字型、顏色、框線、條件式格式、資料驗證、圖表、樞紐分析表、巨集、註解都不比；格式這一層只標「數字格式不同」和「合併儲存格範圍不同」兩種。加密的活頁簿和舊版二進位 `.xls` 會拒絕並說明原因。

## Limits

Does not recalculate formulas (it compares the values stored in the file), does not compare fonts, colours, borders, conditional formatting, charts, pivot tables, macros or comments, does not open legacy .xls or encrypted files, and does not write a merged workbook — it reports the differences.

## FAQ

### 比對時我的 Excel 檔會被上傳嗎？

不會。兩本活頁簿都從你的磁碟讀進來，在頁面裡的 Web Worker 解開、解析、比對。沒有伺服器在做事，關掉分頁之後兩個檔案都不會留下任何副本。匿名的使用事件只記「跑了一次比對、成功與否、用哪種對齊模式」。

### 我在中間插了一列，為什麼下面每一列沒有全部被報成變更？

因為比對之前會先把列對齊。自動模式把每一列算成雜湊，用 Myers diff 找出插入和刪除的列，所以插入點下面的列會配到它們真正的對應列。鍵欄模式用你挑的鍵來配對，更可靠。只有位置模式是第 N 列對第 N 列——版面固定的表單才用它，清單別用。

### 「只有公式變更」是什麼意思？

兩個檔案裡的快取值一樣，但公式不一樣——最常見的是一邊是 `=SUM(B2:B9)`，另一邊是這條公式當初算出來的數字。表今天看起來沒差，明天就會悄悄停止更新，所以它有自己的標記，不會被歸進「沒變」。

### 兩個檔案都顯示 100 的格子，為什麼被標成不同？

通常是型別不一樣：一邊存的是文字 `100`，另一邊是數字 `100`；或者一邊是布林值，另一邊是文字 `TRUE`。在格線裡看起來一樣，加總和查找時卻是兩回事。想把它們當成相同，就打開「用顯示文字比較」。

### 兩個檔是不同軟體存的，幾乎每個數字都被標出差異，怎麼辦？

先看容差和 15 位規則：前 15 位有效數字一致的數字本來就算相同，不同軟體對同一個值在第 16、17 位產生的雜訊會被吸收掉。如果差異還是超過這個範圍，可能是其中一個檔案的快取值是舊的——活頁簿設成手動計算、標了「開啟時重算」、或有公式卻沒有快取結果時，頁面都會提醒。

### 自動對齊停下來叫我換模式，為什麼？

自動對齊是對列序列跑 Myers diff，成本隨差異數成長。兩張表差太多列，或是 15 秒的時間預算用完時，它會直接停下，而不是回傳一個猜的結果，也不會偷偷改成位置對齊。表裡有鍵欄就選鍵欄模式，又快又準；版面固定就選位置模式。

### 會比格式、圖表或巨集嗎？

不會。字型、填色、框線、條件式格式、資料驗證、圖表、樞紐分析表、註解、VBA 這一版都不比；格式差異只回報「數字格式變了」和「合併儲存格範圍變了」兩種。`.xlsm` 可以正常打開，只是巨集不在比對範圍內。

### 為什麼隱藏的工作表也算進去？

因為被改掉的假設往往就藏在隱藏工作表裡。標成隱藏或深度隱藏的工作表跟其他工作表一樣比對，隱藏旗標本身有沒有變也會回報——一張在這版看得到、在那版被收起來的工作表不會溜過去。

## Related tools

- [Word Compare](https://bytescope.dev/zh-Hant/word-compare.md) — 一段一段、一個字一個字比對兩份 Word 文件。
- [CSV Explorer](https://bytescope.dev/zh-Hant/csv-explorer.md) — 把很大的 CSV 匯出檔開成可排序、可篩選的表格，還能用 SQL 查。
- [Office Document Inspector](https://bytescope.dev/zh-Hant/office-inspector.md) — 看看這兩個檔案除了儲存格之外還夾帶什麼：作者、隱藏工作表、檔案路徑。
