如何在Excel中固定行:實用的5種方法
Iron Software團隊撰寫。 如果您想以程式方式自動化Excel工作流程,請存取IronXL產品頁面,以了解更多關於在.NET中構建強大電子表單解決方案的資訊。
在資料驅動的決策制定世界中,您的分析只有在構建它的資料一樣好。 冗餘資訊,通常稱為重複,可能會扭曲財務總額,膨脹潛在客戶數量,並導致客戶通信中的尷尬錯誤。 無論您是在清理郵寄清單還是調節每月支出,知道如何在Excel中刪除重複項對任何專業人士來說都是不可談判的技能。
在Excel中刪除重複項的最快方法是使用資料選項卡上的刪除重複項按鈕。 只需選擇您的資料集,點選資料 > 刪除重複項,選擇您想要檢查匹配的列,然後按確定。 這將立即清除所有冗餘條目,只保留您的表格中的唯一記錄。
方法1:最快捷的方法(資料工具命令)
對於大多數辦公任務,您不需要複雜的公式。 Excel包括一個專用的"核選項"用於重複值,可以在幾秒鐘內清理您的資料。
使用Microsoft Excel移除重複項工具
- 選擇您的資料範圍:點擊資料表中的任意位置。 Excel通常足夠聰明以檢測邊界,但您也可以點擊並拖動以選擇特定區域。

- 導航至資料選項卡:查看頂部功能區,然後單擊資料。
![]()
-
點擊移除重複項:在資料工具組中,您將找到移除重複項圖標。
- 配置對話框: * 我的資料具有標題:如果您的第一行包含標題(如"名稱"或"日期"),請確保選中此項。

* **選擇列:**選擇哪個列必須一致以便Excel將一行視作重複。 如果您選擇所有列,則僅會刪除100%相同的行。
- 點擊確認:Excel會顯示一個摘要,其中顯示找到並刪除的重複值數量,以及剩餘的唯一值數量。

使用鍵盤快捷鍵
要在不觸碰滑鼠的情況下執行此操作,可使用以下順序:
- Alt:啟用功能區。
- A:打開資料選項卡。
- M:觸發移除重複項功能。
方法2:"安全"的方法(使用高級篩選)
標準的"移除"工具是永久性的。 如果您想保持原始資料不變,但提取唯一列表到其他位置,則高級篩選是您的好夥伴。
提取唯一紀錄的步驟
- 選擇您的資料範圍。 2.前往資料選項卡,並單擊高級(在篩選器圖標旁邊)。
3.在對話框中,選擇複製到另一位置。 4.驗證列表範圍正確。
5.在複製到框中,單擊您希望清理資料開始的儲存格。
-
重要步驟:選中僅限唯一記錄的框。
- 點擊確定。
這會建立一個全新的幹淨列表,而不會觸碰到混亂的原始列表,對於審計用途是完美的。
方法3:動態移除Excel重複項(UNIQUE函式)
如果您使用Excel 365或Excel 2021+,可以使用一個"Office 365公式",其會自動更新。 這比手動按鈕更強大,因為如果您新增資料到原始列表中,"唯一"列表會即時更新。
如何使用=UNIQUE()公式
- 點擊一個空白儲存格,您希望清理資料從此開始。
-
輸入以下公式:=UNIQUE(A2:A500)
- 按下 Enter。

Excel會向下和橫向展示結果,建立一個動態的唯一值範圍。
專業提示:如果您希望在刪除重複單元格的同時,列表按字母順序排序,請將公式包裹如下:=SORT(UNIQUE(A2:A500))

方法4:使用Power Query移除重複值(最適合大型資料)
當處理50,000行或更多的資料集時,標準的Excel圖形使用者介面有時可能會掛起或延遲。 Power Query是專業人士的"強力"選擇。
- 選擇您的資料並前往資料 > 從表格/範圍。 單擊確認以打開Power Query編輯器。
-
選擇要檢查重複的列。 (按住Ctrl以選擇多個)。
-
在列標題上右鍵單擊。
- 選擇 移除重複項。
- 在"主頁"選項卡上單擊關閉並載入,將清理的資料帶回至新的Excel工作表中。
方法5:使用樞紐分析表尋找唯一值
樞紐分析表通常被忽視作為清理工具,但它們在將數千行折疊成一個幹淨、唯一的列表的同時,亦能有效地告訴您每個重複出現了多少次。
-
選擇您的資料範圍。
- 前往插入 > 樞紐分析表。
3.選擇新工作表,然後確認。

-
將您想去重的字段(例如,"客戶電子郵件")拖到行區域。
-
將同一字段拖到值區域。
- Excel現在會為您顯示清單中每個獨特的電子郵件地址,並在旁邊顯示一個統計數字,告訴您這個"重複"在您的原始檔案中出現了多少次。
方法6:處理大小寫敏感的重複項(公式方法)
標準的Excel工具是"大小寫不敏感"。這意味著Excel認為"APPLE"和"apple"是一樣的。 如果您需要僅在大小寫匹配時識別重複項,您需要一個輔助列。
- 在您的資料旁邊建立一個輔助列。
-
使用公式檢查精確匹配:=SUMPRODUCT(--EXACT($A$2:$A$100, A2))>1
- 對於重複項(大小寫敏感),這會返回TRUE。

- 篩選輔助列中TRUE的值,然後手動刪除這些行。

方法7:使用VBA移除重複項(宏自動化)
如果您是一名每週一早上都收到混亂報告的分析師,您不應該每週點擊同樣的五個按鈕。 您可以使用簡單的VBA腳本自動化"移除重複項"過程。
-
按下Alt + F11打開VBA編輯器。
- 前往 插入 > 模組。
- 貼上以下程式碼:
Sub RemoveAllDuplicates()
Dim ws As Worksheet
Set ws = ActiveSheet
'Assuming your data starts in A1 and goes to Column C
ws.Range("A1").CurrentRegion.RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlYes
MsgBox "Duplicate removal complete!", vbInformation
End Sub
Sub RemoveAllDuplicates()
Dim ws As Worksheet
Set ws = ActiveSheet
'Assuming your data starts in A1 and goes to Column C
ws.Range("A1").CurrentRegion.RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlYes
MsgBox "Duplicate removal complete!", vbInformation
End Sub
Option Strict On
Sub RemoveAllDuplicates()
Dim ws As Worksheet
ws = ActiveSheet
'Assuming your data starts in A1 and goes to Column C
ws.Range("A1").CurrentRegion.RemoveDuplicates(Columns:=New Integer() {1, 2, 3}, Header:=xlYes)
MsgBox("Duplicate removal complete!", vbInformation)
End Sub
- 按下 F5 以運行。 此宏會自動檢測您的資料邊界,並清除所有三列中的重複項。
常見問題與故障排除
1."未找到重複項"(但我看到了!)
這幾乎總是由隱藏空間引起的。 如果一個單元格寫的是"John",另一個寫的是"John ",Excel將其視為不同。
- 修正:在運行移除工具之前,使用=TRIM()函式對資料進行處理,以去除尾部空格。
2. 以文字形式儲存的數字
如果您的ID號碼是從資料庫匯出的,有些可能被格式化為"文字",而其他是"數字"。
- 修正:高亮顯示該列,單擊出現的小警告圖標,然後選擇轉換為數字。
3. 合併單元格
如果您的資料範圍包含合併單元格,Excel無法移除重複項。
- 修正:選擇整個工作表,單擊"首頁"選項卡上的取消合併單元格,然後進行清理。
4. 非印刷字元
有時從網路複製的資料包含"非換行空格"(字元160)。 標準的TRIM函式無法去除這些。
- 修正:使用查找和替換(Ctrl + H)。 按住Alt鍵,並在"查找內容"框中鍵入0160,然後單擊全部替換。
給開發者的建議:使用IronXL以程式方式進行去重
在企業環境中,資料清理通常在人員打開電子表單之前進行。 如果您正在建立一個.NET應用程式,您不應依賴使用者手動點擊"移除重複項"按鈕。
IronXL允許您完全自動化此過程。 您可以載入工作簿,使用LINQ識別冗餘行,並以程式方式清除它們,確保只有幹淨資料進入您的資料庫或終端使用者。
為何使用IronXL進行資料清理?
- 無需安裝Excel:在不需要Microsoft Office的情況下在伺服器上處理文件。
- 速度:比標準的Excel圖形使用者介面處理大型電子表格更快。
- 精度:使用複雜的C#邏輯來定義什麼構成"重複項",超越簡單的行匹配。
Code Snippet: Delete Duplicate Data in C
以下範例顯示如何使用IronXL基於特定的列值查找並移除重複行。
using IronXL;
using System.Linq;
using System.Collections.Generic;
// Load the workbook
WorkBook workbook = WorkBook.Load("financial_report.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Use LINQ to identify unique rows based on the 'Email' column (Column B)
var seenEntries = new HashSet<string>();
var rowsToRemove = new List<int>();
for (int i = 1; i < sheet.RowCount; i++)
{
string email = sheet["B" + (i + 1)].Value.ToString();
if (seenEntries.Contains(email))
{
rowsToRemove.Add(i);
}
else
{
seenEntries.Add(email);
}
}
// Remove the flagged duplicate rows (in reverse order to maintain index integrity)
foreach (var rowIndex in rowsToRemove.OrderByDescending(r => r))
{
sheet.Rows[rowIndex].RemoveRow();
}
// Save the sanitized file
workbook.SaveAs("Clean_financial_report.xlsx");
using IronXL;
using System.Linq;
using System.Collections.Generic;
// Load the workbook
WorkBook workbook = WorkBook.Load("financial_report.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Use LINQ to identify unique rows based on the 'Email' column (Column B)
var seenEntries = new HashSet<string>();
var rowsToRemove = new List<int>();
for (int i = 1; i < sheet.RowCount; i++)
{
string email = sheet["B" + (i + 1)].Value.ToString();
if (seenEntries.Contains(email))
{
rowsToRemove.Add(i);
}
else
{
seenEntries.Add(email);
}
}
// Remove the flagged duplicate rows (in reverse order to maintain index integrity)
foreach (var rowIndex in rowsToRemove.OrderByDescending(r => r))
{
sheet.Rows[rowIndex].RemoveRow();
}
// Save the sanitized file
workbook.SaveAs("Clean_financial_report.xlsx");
Imports IronXL
Imports System.Linq
Imports System.Collections.Generic
' Load the workbook
Dim workbook As WorkBook = WorkBook.Load("financial_report.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Use LINQ to identify unique rows based on the 'Email' column (Column B)
Dim seenEntries As New HashSet(Of String)()
Dim rowsToRemove As New List(Of Integer)()
For i As Integer = 1 To sheet.RowCount - 1
Dim email As String = sheet("B" & (i + 1)).Value.ToString()
If seenEntries.Contains(email) Then
rowsToRemove.Add(i)
Else
seenEntries.Add(email)
End If
Next
' Remove the flagged duplicate rows (in reverse order to maintain index integrity)
For Each rowIndex In rowsToRemove.OrderByDescending(Function(r) r)
sheet.Rows(rowIndex).RemoveRow()
Next
' Save the sanitized file
workbook.SaveAs("Clean_financial_report.xlsx")
輸出:原始工作表與移除重複項的工作表

方法比較
| 方法 | 最適合 | 資料大小 | 困難度 |
|---|---|---|---|
| 資料工具 | 快速,一次性清理 | 小/中 | 初學者 |
| 高級篩選 | 保持原始資料完整 | 小 | 中級 |
| UNIQUE函式 | 動態,實時更新的列表 | 中 | 中級 |
| 樞紐分析表 | 分析重複頻率 | 中 | 中級 |
| 查詢 | 重複的復雜清理 | 大規模/企業 | 高級 |
| VBA宏 | 重複的本地任務 | 中 | 高級 |
| IronXL(.NET) | 自動伺服器端清理 | 無限制 | 開發人員 |
總結和最佳實踐
清理您的資料是準確報告的第一步。 為了保持您的工作手冊專業和無錯誤:
-
備份您的資料:在使用"刪除重複項"工具之前,總是先複製您的選項卡,它是永久性的,當您後來發現需要這些資料時,可能難以"撤消"。
-
先標準化:使用TRIM、PROPER或CLEAN以確保您的文字一致,然後再尋找重複項。
- 在您刪除之前, 檢查: 最佳使用條件格式(高亮顯示單元格規則) 首先高亮顯示重複資料,然後才開槍。
4.驗證結果:移除後,檢查您的行數。 如果您預計失去100行但失去了1,000行,請立即執行Ctrl + Z,然後在工具中重新檢查您的列選擇。
準備好將您的Excel技能提升到新的層次了嗎? 試用IronXL的免費試用版。 無論您是資料分析師還是軟體工程師,擁有合適的工具使一切變得不同。 探索IronXL產品頁面,了解如何使用專業級程式碼管理複雜的電子試算邏輯。




