You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

删除Column1重复行并保留Column5最大值的VBA实现咨询

解决按Column1去重且保留Column5最高值行的VBA方案

实现逻辑

  • 先对全表做两次排序:第一优先级按Column1(A列)升序排列,把所有Column1相同的行聚集到一起;第二优先级按Column5(E列)降序排列,让每个Column1分组内Column5数值最高的行排在分组最顶部
  • 再执行Column1去重操作,Excel原生去重逻辑会默认保留每个重复分组的第一行,刚好匹配我们要保留最高值行的需求

可直接使用的VBA代码

Sub KeepHighValueWhenDeduplicate()
    Dim Sht1 As Worksheet
    Dim LastRow As Long
    Dim LastCol As Long
    
    ' 绑定目标工作表,可自行修改工作表名称
    Set Sht1 = Worksheets("Sheet1")
    ' 自动识别当前数据的最大行、最大列
    LastRow = Sht1.Range("A" & Sht1.Rows.Count).End(xlUp).Row
    LastCol = Sht1.Cells(1, Sht1.Columns.Count).End(xlToLeft).Column
    
    ' 关闭屏幕更新,提升大数据量下的运行效率
    Application.ScreenUpdating = False
    
    ' 按规则排序
    Sht1.Range(Sht1.Cells(1, 1), Sht1.Cells(LastRow, LastCol)).Sort _
        Key1:=Sht1.Range("A1"), Order1:=xlAscending, _
        Key2:=Sht1.Range("E1"), Order2:=xlDescending, _
        Header:=xlYes
    
    ' 按Column1去重,保留首行(即Column5最高值行)
    Sht1.Range(Sht1.Cells(1, 1), Sht1.Cells(LastRow, LastCol)).RemoveDuplicates _
        Columns:=1, Header:=xlYes
    
    ' 恢复屏幕更新
    Application.ScreenUpdating = True
    MsgBox "去重完成,已保留每个Column1分组中Column5最高值行"
End Sub

调整说明

  • 如果你的Column1不是A列、Column5不是E列,修改代码中Key1、Key2对应的单元格范围即可
  • 如果你的数据表没有表头,将两处Header:=xlYes改为Header:=xlNo
  • 执行代码前请先备份原始数据,避免操作失误丢失数据

内容的提问来源于stack exchange,提问作者user16978245

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 18:36:03