關於這個工具
同一份報表的「最終版」和「真的最終版」、同一本帳匯出兩次、同事改過再傳回來的表——你只想知道到底改了哪裡。把兩個 .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 會拒絕並說明原因。