在 Excel 中比較兩份清單的差異,指的是取兩欄數值,把它們對齊,然後找出哪些項目同時出現在兩份清單中、哪些只出現在第一份清單中、哪些只出現在第二份清單中,而整個運算,都在瀏覽器本機執行,而不是在試算表公式裡完成。
Excel 並沒有提供單一一個內建指令,能在一份標示清楚的報表中,回傳全部五種標準集合檢視——共同項、僅 A、僅 B、聯集,以及對稱差集。傳統做法,是用包在輔助欄裡的 MATCH、COUNTIF、IF,或 XLOOKUP。對一份 50 列的聯絡人清單來說,這樣做沒問題。但對一份 5,000 列的庫存登記表、一份 20,000 行的電子郵件排除清單,或一份 40,000 列的遷移清單來說,以公式為基礎的比對,就會變得緩慢、脆弱,而且難以稽核。一個瀏覽器端的行工具,會直接拿剪貼簿上已有的欄位數值,在一份標示清楚的報表中,回傳每一種集合檢視,不需要上傳、不需要除錯公式,也不需要管理輔助欄。

Excel 公式 vs. 瀏覽器端的行工具
在 Excel 中尋找兩欄之間差異的方法,有三種。它們在能產生什麼結果、在哪裡執行,以及結果如何被下游使用上,各有不同。
| 方法 | 共同項 | 僅 A | 僅 B | 聯集 | 對稱差集 | 執行位置 |
|---|---|---|---|---|---|---|
| Excel MATCH/COUNTIF 公式搭配輔助欄 | 可以 | 可以 | 可以 | 非原生支援 | 非原生支援 | 在活頁簿內部 |
| Power Query 合併 | 可以 | 可以 | 可以 | 可以 | 需要額外步驟才可以 | 在 Excel 內部 |
| Compare Two Lists 瀏覽器工具 | 一次點擊 | 一次點擊 | 一次點擊 | 一次點擊 | 一次點擊 | 在瀏覽器本機完成 |
這裡的取捨很直接。公式與 Power Query,會在活頁簿內部的來源資料變動時自動重新整理。而這個瀏覽器工具,給你的則是一份靜態、可複製、標示清楚的報表,你可以把它貼進工單、聊天訊息、電子郵件、CSV 檔案,或一個無法存取你試算表的下游系統中。
把你 Excel 中的兩欄資料,帶進這個工具裡
這個工具,每一行接受一個項目,因此實際的問題,是如何把欄位資料,從 Excel 搬到 List A 與 List B 中,同時不要一併帶上標題列,也不要帶進拖曳出來的空白尾端儲存格。以下這些步驟,涵蓋了最常見的做法。
- 點選第一欄的欄標字母(例如A),選取整欄。如果你只需要特定幾列,改用拖曳的方式選取那些儲存格。
- 按下Ctrl+C(在 macOS 上則是Cmd+C),複製選取範圍。
- 在 Windows 上開啟記事本,或在 macOS 上以純文字模式開啟 TextEdit,然後按Ctrl+V 貼上。剪貼簿的內容,會以每行一個項目的形式落地。
- 如果這一欄有標題列,請在文字編輯器中刪掉最上面那一行,這樣標題就不會變成一個幽靈般的清單成員。拖曳出來的空白尾端儲存格,也會以空白行的形式落在這裡,不過這個工具本身已經會自動去除它們。
- 用Ctrl+A 選取剩下的全部文字,按Ctrl+C,然後貼進 Compare Two Lists 的List A 文字區塊中。
- 對第二欄重複同樣的五個步驟,貼進List B。
如果你的欄位帶有雜散的空白列,請先用Excel empty-line cleanup walkthrough 檢查一下緩衝內容,再貼進這個工具中。同樣的純文字緩衝做法,也適用於從 CSV 檔案匯出,或從資料庫查詢結果格線複製出來的列。
以八個步驟執行比對
一旦 List A 與 List B 中,各自都是每行一個已清理過的數值,比對本身,就是一套固定的流程。
- 開啟 Compare Two Lists 工具。
- 把清理過的第一欄,貼進List A。
- 把清理過的第二欄,貼進List B。
- 選擇大小寫是否影響成員資格判定。預設是不區分大小寫,因此Apple 與apple 會共用同一個成員鍵。
- 點選Compare。
- 檢視這五個標示清楚的區塊:In both、Only in A、Only in B、Union,以及Either not both。
- 點選Copy all results,把這份標示清楚的報表,複製到剪貼簿。
- 把這份報表,貼到你的目的地——一張支援工單、一封電子郵件、一個純文字檔案,或一個下游匯入流程——並在把這份報表當成權威依據之前,先確認目的地系統,採用的是相同的逐行比對原則。
編輯任一個文字區塊,都會清除先前的結果,因此在貼上內容變動後重新執行,是刻意設計的行為,而不是悄悄發生的。
五種輸出檢視方式詳解
每一個輸出標籤,遵循的都是一套標準的集合意義,這套意義,在JavaScript Set methods 與Python built-in set types 中,都各自有獨立的文件記載。這五種檢視方式,回答了關於同一組兩份清單的五個不同問題。
| 輸出標籤 | 意義 | 以 A = {apple, banana, pear},B = {banana, peach} 為例的實作範例 |
|---|---|---|
| In both | 同時存在於 List A 與 List B 中的項目 | banana |
| Only in A | 存在於 A、但不存在於 B 中的項目 | apple, pear |
| Only in B | 存在於 B、但不存在於 A 中的項目 | peach |
| Union | 出現在其中一份或兩份清單中的所有項目 | apple, banana, pear, peach |
| Either not both | 只出現在恰好一份清單中的項目 | apple, pear, peach |
輸出順序,依照的是項目在 List A 中第一次出現的順序,接著才是 List B 中新出現的成員(若適用)——這個工具不會對結果排序。當你需要稽核報表保留的是哪一種拼寫方式時,這個順序就很重要。
大小寫敏感度、重複項,與空白字元的規則
在任何比對執行之前,有三條前置處理規則,會套用到兩份清單上,而這五種輸出結果,也都遵循同一套規則。
- 換行符號會被正規化。 CRLF 與獨立的 CR 換行,在比對之前,都會變成 LF,因此從 Windows Excel、macOS Numbers,以及 Linux 匯出的清單,行為會完全一致。
- 每一行,都會被修剪掉開頭與結尾的空白字元。 空白行,會被移除。內部的空白字元,會完全依原樣保留,因此一個多字組成的產品代碼,會保留它中間的空格。
- 重複的成員鍵,會收斂成第一次出現的拼寫與位置。 如果apple 在 List A 中出現三次,任何一個輸出面板中,都只會保留第一個apple。第一次出現的拼寫方式,同時也是在共同項與聯集檢視中會被顯示出來的版本,這在下游系統對大小寫敏感時,格外重要。
在預設的不區分大小寫模式下,Apple 與apple 會共用同一個成員鍵。如果Apple 是 List A 中第一次出現的形式,那麼在每一個標示清楚的區塊中,保留下來的拼寫,就會是這個大小寫形式。在區分大小寫模式下,這兩行會被視為不同的成員,並且都會出現在相關的輸出區塊中。所選定的大小寫規則,會一致套用到去除重複,以及全部五項運算上,因此你不會遇到共同項用一套規則、僅 A 又用另一套規則的情況。
限制、錯誤,以及這個工具不適用的地方
每一份輸入,上限為一百萬個 UTF-16 碼元,以及 50,000 行。這些上限,能讓切割、查詢對照表的建構、面板渲染,以及剪貼簿輸出,維持可預期的效能。如果任一項上限被超過,或者兩份正規化後的清單都是空的,這個工具,會回傳一則明確的錯誤,而不是一份不完整的結果,因此你永遠不會看到一份做到一半的報表。
這項比對,同時也是一種逐行的字面比對。這個工具,不會剖析 CSV、不會依逗號切割、不會正規化 Unicode、不會移除標點符號、不會以數值方式比較數字、不會解析網址,也不會執行模糊比對。在所選定的大小寫規則下,一個實體行,就是一個項目。如果你的清單中,包含只在標點符號、重音符號,或數字格式上有差異的近似重複項,請先透過一個正規化步驟處理它們,或改用一個專為模糊去重設計的工具。
把這項比對,用在電子郵件清單、庫存識別碼、關鍵字集合、網址集合、檔名、與會者名單、遷移檢查、允許清單,以及簡單的資料清理上。不要把它,當成資料庫的 join、試算表逐格合併、差異檢視器、模糊去重工具、安全性存取控制驗證器,或對帳服務來使用。它並不知道別名、等價網域、Unicode 混淆字元、數值範圍,或商業實體身分之間的關係。
沒有任何輸入內容,或結果,會被上傳、儲存、記錄到某個比對服務,或送進任何 AI 模型。剖析、集合運算、渲染,以及剪貼簿寫入,全部都在瀏覽器本機完成,這在清單中含有個人資料、客戶識別碼,或任何受內部資料處理政策規範的內容時,格外重要。