最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python+VBA刪除Excel重復(fù)行的兩種實(shí)用方法詳解

 更新時(shí)間:2026年01月31日 08:54:51   作者:Eiceblue  
在日常處理Excel數(shù)據(jù)時(shí),重復(fù)行是高頻出現(xiàn)的問題,本文將詳細(xì)介紹兩種高效的去重方案,分別是Free Spire.XLS for Python和VBA 腳本,有需要的小伙伴可以了解下

在日常處理Excel數(shù)據(jù)時(shí),重復(fù)行是高頻出現(xiàn)的問題,不僅會增加數(shù)據(jù)量,還可能導(dǎo)致統(tǒng)計(jì)分析出錯(cuò)。本文將詳細(xì)介紹兩種高效的去重方案:Free Spire.XLS for Python(適合自動化/批量處理)和 VBA 腳本(適合 Excel 內(nèi)直接操作),幫助你根據(jù)場景選擇最優(yōu)方式。

核心需求適配

你在處理 Excel 重復(fù)行時(shí),可能面臨這些場景:

  • 需批量處理數(shù)十個(gè) Excel 文件,希望自動化腳本一鍵去重;
  • 僅處理單個(gè) Excel 文件,不想安裝 Python,直接在 Excel 內(nèi)操作;
  • 需保留 Excel 原生格式(樣式、公式),同時(shí)精準(zhǔn)控制去重規(guī)則;
  • 既想掌握輕量化的 VBA 快速操作,也想學(xué)會 Python 的批量處理能力。

前置認(rèn)知:兩種方法核心對比

特性Python (Free Spire.XLS)Excel VBA
操作環(huán)境需安裝 Python + Spire.XLS 庫無需額外安裝,Excel 原生支持
適用場景批量處理多文件、跨平臺單個(gè)文件快速處理、輕量化操作、辦公場景
格式兼容性保留 Excel 原生格式、公式、樣式完全原生操作,格式無損耗
學(xué)習(xí)成本入門級 Python 語法,代碼可復(fù)用簡單 VBA 語法,僅需掌握核心判重邏輯
自動化能力可集成到批量腳本、定時(shí)任務(wù)僅在 Excel 內(nèi)運(yùn)行,適合單次操作

方法1:通過 Python 刪除重復(fù)行

Free Spire.XLS for Python 是一款無需安裝 Microsoft Excel 即可操作 Excel 文件的免費(fèi) Python 庫,適合批量處理多個(gè) Excel 文件、自動化腳本開發(fā)場景。

1. 環(huán)境準(zhǔn)備

首先安裝Free Spire.XLS for Python,執(zhí)行以下命令:

pip install Spire.Xls.Free

2. 完整實(shí)現(xiàn)代碼

from spire.xls import *

# 創(chuàng)建Workbook實(shí)例
workbook = Workbook()
workbook.LoadFromFile("duplicates.xlsx")
sheet = workbook.Worksheets[0]

# 配置關(guān)鍵參數(shù)
key_column = 1  # A列(Spire.XLS中列號從1開始)
last_row = sheet.LastRow
# 定義要處理的范圍
data_range = sheet.Range[f"A1:A{last_row}"]

# 用于跟蹤已出現(xiàn)的值(去重核心)
seen_values = set()
rows_to_remove = []

# 獲取總行數(shù)
row_count = data_range.Rows.Length

# 核心邏輯:從最后一行向前遍歷
for i in range(row_count, 0, -1):
    # 獲取單元格值并標(biāo)準(zhǔn)化
    cell = data_range[i, key_column]  
    cell_value = str(cell.DisplayedText).strip()
    
    # 規(guī)則:空值 或 已出現(xiàn)過的值 → 標(biāo)記為刪除
    if not cell_value or cell_value in seen_values:
        rows_to_remove.append(i) 
    else:
        seen_values.add(cell_value)

# 批量刪除標(biāo)記的行(逆序遍歷收集的行號,直接刪即可)
for row in rows_to_remove:
    sheet.DeleteRow(row)

# 保存并釋放資源
workbook.SaveToFile("RemoveDuplicates.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

3. 代碼關(guān)鍵解釋

Workbook():創(chuàng)建Excel工作簿對象,負(fù)責(zé)加載/保存文件;

LastRow:獲取工作表中實(shí)際有數(shù)據(jù)的最后一行,避免處理空行;

set:高效記錄已出現(xiàn)的單元格值;

行數(shù)據(jù)去重邏輯:

  • 逆序遍歷:從最后一行到第一行,徹底規(guī)避 刪除行后行號偏移問題,無需調(diào)整行號;
  • 清晰的判斷規(guī)則:拆分 空值處理和重復(fù)值處理邏輯,易讀易維護(hù);
  • 批量標(biāo)記 + 批量刪除:先收集所有要?jiǎng)h除的行號,再統(tǒng)一刪除,減少 IO 操作。

DeleteRow():刪除標(biāo)記為空白的行;

Dispose():釋放資源,避免內(nèi)存泄漏。

方法2:VBA 腳本刪除 Excel 重復(fù)行

VBA(Visual Basic for Applications)是 Excel 內(nèi)置的腳本語言,無需額外安裝工具,適合手動操作單個(gè) Excel 文件、快速去重的場景。

1. 準(zhǔn)備工作:啟用 VBA 編輯器

  • 打開 Excel 文件 → 【文件】→【選項(xiàng)】→【自定義功能區(qū)】→ 勾選 “開發(fā)工具”;
  • Alt + F11 打開 VBA 編輯器 →【插入】→【模塊】,即可編寫代碼。

2. 完整 VBA 代碼

該代碼會刪除當(dāng)前工作表中基于第一列(A列)所有的重復(fù)行,保留第一條重復(fù)行:

Sub VBA_RemoveDuplicates_SpecCol()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim dict As Object
    Dim targetCol As String
    Dim cellVal As String
    Dim i As Long
    
    ' 指定判重列(如"A"列)
    targetCol = "A"
    
    Set ws = ActiveSheet
    Set dict = CreateObject("Scripting.Dictionary")
    lastRow = ws.UsedRange.Rows.Count
    
    If lastRow < 2 Then
        MsgBox "數(shù)據(jù)不足!", vbInfo
        Exit Sub
    End If
    
    ' 倒序遍歷,僅按指定列判重
    For i = lastRow To 2 Step -1
        cellVal = IIf(IsEmpty(ws.Cells(i, targetCol).Value), "", ws.Cells(i, targetCol).Value)
        If dict.Exists(cellVal) Then
            ws.Rows(i).Delete
        Else
            dict.Add cellVal, i
        End If
    Next i
    
    Set dict = Nothing
    Set ws = Nothing
    MsgBox "按" & targetCol & "列去重完成!", vbInfo
End Sub

3. 代碼關(guān)鍵解釋

  • ActiveSheet:表示當(dāng)前選中的工作表,也可手動指定ThisWorkbook.Worksheets("Sheet1");
  • targetCol = "A": 定義判重列,改值即可切換目標(biāo)列;
  • 判重依據(jù):僅提取指定列單元格值,用 IIf(IsEmpty(...)) 統(tǒng)一空值為"",避免判重錯(cuò)誤
  • lastRow To 2 Step -1:防止刪除行后索引錯(cuò)亂;
  • Delete:刪除判斷為重復(fù)的列

4. 運(yùn)行 VBA 代碼的方法

  • 在 VBA 編輯器中粘貼代碼;
  • F5 運(yùn)行,或點(diǎn)擊 “運(yùn)行” 按鈕;
  • 回到 Excel,彈窗提示 “按A列去重完成”。

無論是 Python (Free Spire.XLS) 的批量自動化,還是 VBA 的輕量化原生操作,掌握這兩種方法就能覆蓋所有 Excel 去重場景,從根本上解決手動刪重復(fù)行的低效問題,大幅提升數(shù)據(jù)處理效率。

到此這篇關(guān)于Python+VBA刪除Excel重復(fù)行的兩種實(shí)用方法詳解的文章就介紹到這了,更多相關(guān)Python刪除Excel重復(fù)行內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Boston數(shù)據(jù)集預(yù)測放假及應(yīng)用優(yōu)缺點(diǎn)評估

    Boston數(shù)據(jù)集預(yù)測放假及應(yīng)用優(yōu)缺點(diǎn)評估

    這篇文章主要為大家介紹了Boston數(shù)據(jù)集預(yù)測放假及應(yīng)用優(yōu)缺點(diǎn)評估,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Python利用Pillow處理圖像的實(shí)踐指南

    Python利用Pillow處理圖像的實(shí)踐指南

    Pillow,是Python?Imaging?Library?(PIL)的一個(gè)分支,用于處理圖像,這篇文中主要來和大家詳細(xì)講講Pillow處理圖像的具體方法,感興趣的小伙伴可以了解一下
    2023-05-05
  • Python實(shí)現(xiàn)對一個(gè)函數(shù)應(yīng)用多個(gè)裝飾器的方法示例

    Python實(shí)現(xiàn)對一個(gè)函數(shù)應(yīng)用多個(gè)裝飾器的方法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)對一個(gè)函數(shù)應(yīng)用多個(gè)裝飾器的方法,結(jié)合實(shí)例形式分析了Python編程中一個(gè)函數(shù)使用多個(gè)裝飾器的簡單操作技巧,需要的朋友可以參考下
    2018-02-02
  • Python如何給你的程序做性能測試

    Python如何給你的程序做性能測試

    這篇文章主要介紹了Python如何給你的程序做性能測試,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • Python sqlite3查詢操作過程解析

    Python sqlite3查詢操作過程解析

    這篇文章主要介紹了Python sqlite3查詢操作過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Python Excel vlookup函數(shù)實(shí)現(xiàn)過程解析

    Python Excel vlookup函數(shù)實(shí)現(xiàn)過程解析

    這篇文章主要介紹了Python Excel vlookup函數(shù)實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Python解決八皇后問題示例

    Python解決八皇后問題示例

    這篇文章主要介紹了Python解決八皇后問題,簡單描述了八皇后問題的原理并結(jié)合實(shí)例形式分析了Python基于遞歸算法解決八皇后問題的相關(guān)操作技巧,需要的朋友可以參考下
    2018-04-04
  • 總結(jié)Python使用過程中的bug

    總結(jié)Python使用過程中的bug

    今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識,文章圍繞著Python使用過程中的bug展開,文中有非常詳細(xì)的介紹,需要的朋友可以參考下
    2021-06-06
  • Django調(diào)用支付寶接口代碼實(shí)例詳解

    Django調(diào)用支付寶接口代碼實(shí)例詳解

    這篇文章主要介紹了Django調(diào)用支付寶接口代碼實(shí)例詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • flask框架單元測試原理與用法實(shí)例分析

    flask框架單元測試原理與用法實(shí)例分析

    這篇文章主要介紹了flask框架單元測試原理與用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了單元測試的概念、原理及基本用法,需要的朋友可以參考下
    2019-07-07

最新評論

双江| 闽清县| 黄山市| 杨浦区| 咸丰县| 株洲市| 麦盖提县| 股票| 龙井市| 东兰县| 长乐市| 永嘉县| 寻乌县| 邢台市| 思茅市| 铜川市| 双峰县| 大庆市| 西丰县| 峨眉山市| 五峰| 乐山市| 浮山县| 藁城市| 通海县| 石家庄市| 宁乡县| 屯留县| 衡阳县| 通道| 永兴县| 苗栗县| 寿光市| 华阴市| 武义县| 定远县| 云霄县| 高雄县| 喀什市| 伊吾县| 西城区|