如何在 Excel 中删除重复行,仅保留其中的最高值?
例如,您在 Excel 中有一个采购表,如第一张截图所示。现在,您需要根据“水果”列删除重复行,并在“数量”列中保留每种水果对应的最大值,效果如第二张截图所示。您会如何解决这个问题?本文将为您分享两种实用技巧。
使用 Kutools for Excel 删除重复行并仅保留最高值
使用 VBA 删除重复行并仅保留最高值
假设您有一个如下图所示的表格。本方法将为您介绍一个 VBA 宏,用于在 Excel 中根据某一列删除重复行,并仅保留另一列中的最高值。请按以下步骤操作:

1. 同时按下 Alt+F11 键,即可打开 Microsoft Visual Basic for Applications 窗口。
2. 单击插入> 模块,并将以下代码粘贴到新打开的模块窗口中。
VBA:删除重复行并保留最高值
Public Sub DelDupes()
Dim xFilterRg As Range
Dim xCriteriaRg As Range
Dim xAddress As String
Dim xSUpdate As Boolean
On Error Resume Next
xAddress = Application.ActiveWindow.RangeSelection.Address
Set xFilterRg = Application.InputBox("Please select a range:", "Kutools for Excel", xAddress, , , , , 8)
If xFilterRg Is Nothing Then Exit Sub
Set xFilterRg = Application.Intersect(ActiveSheet.UsedRange, xFilterRg)
If xFilterRg Is Nothing Then Exit Sub
On Error GoTo 0
xSUpdate = Application.ScreenUpdating
Application.ScreenUpdating = False
Set xCriteriaRg = ActiveSheet.Cells(1, xFilterRg.Column + xFilterRg.Columns.Count).Resize(2)
xCriteriaRg.Resize(1).Offset(1).Formula = "=COUNTIF(" & xFilterRg(2, 1).Address & ":" & _
xFilterRg(2, 1).Address(False, False) & "," & _
xFilterRg(2, 1).Address(False, False) & ")>1"
With xFilterRg
.Sort key1:=xFilterRg.Cells(1, 1).Offset(0, 1), order1:=xlDescending, Header:=xlYes
.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=xCriteriaRg
.Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
.Parent.ShowAllData
End With
xCriteriaRg.Clear
Application.ScreenUpdating = xSUpdate
End Sub 3. 按下 F5 键,或单击运行按钮即可运行此 VBA。
4. 此时会弹出一个对话框,请选择您要根据其删除重复行并保留最高值的列,然后单击确定按钮。

在我们的示例中,我们将依据“水果”列删除重复行,并在“数量”列中保留最大值,因此我选择了如上图所示的“水果”列和“数量”列。
随后,您将看到重复行已根据“水果”列被删除,并保留了每种水果在“数量”列中的最高值。如下图所示:

注意:
(1) 所选限定区域必须以您要依据其删除重复行的列开头。
(2) 此 VBA 仅能保留紧邻删除依据列后一列中的最高值。
(3) 此 VBA 无法在 Microsoft Excel 2007 中使用。
使用 Kutools for Excel 删除重复行并仅保留最高值
上述 VBA 对某些用户而言可能不够简便,且仅能在依据列之后的列中保留最高值。但 Kutools for Excel 的高级合并行工具可轻松帮您解决此问题。
Kutools for Excel——包含 300 多个 Excel 必备工具,并永久免费畅享 AI 功能!立即下载!
1. 选择您要删除重复行并保留最高值的表格(本例中为 A1:C24),然后点击 Kutools > 合并和拆分 > 高级合并行。
2. 在弹出的“合并行基于列”对话框中,请按如下方式配置:
(1) 选择“水果”列(即您要据此删除重复行的列),然后单击主键按钮;
(2) 选择“数量”列(即您要保留最高值的列),然后单击计算> 最大值。
(3) 根据需要为其他列指定组合规则。

3. 单击确定按钮后,您将看到所有重复行已根据“水果”列被删除,且每种水果在“数量”列中仅保留最大值。参见下图:

Kutools for Excel 的高级合并行工具可轻松根据某一列合并行,并基于该列对其他列进行求和、计数、最大值、最小值、乘积等计算。立即点击获取 60 天免费试用,无任何限制!
演示:在 Excel 中删除重复行并仅保留最高值
最佳办公效率工具
| 🤖 | KUTOOLS AI 助手:基于以下内容革新数据分析:智能执行 | 生成代码| 创建自定义公式 | 数据分析及生成图表| 调用 Kutools Functions…… |
| 热门功能:查找、高亮或标记重复项 | 删除空白行 | 合并列或单元格且不丢失数据 | 不使用公式的四舍五入…… | |
| 高级 LOOKUP:多条件 VLookup | 多值 VLookup | 跨多工作表 VLookup | 模糊查找…… | |
| 高级下拉列表:快速创建下拉列表 | 级联下拉列表 | 多选下拉列表…… | |
| 列管理器:添加指定数量的列|移动列|切换隐藏列的可见性状态|比较区域与列…… | |
| 特色功能:网格聚焦 | 设计视图 |增强编辑栏 | 工作簿和表管理器 | 资源库(自动文本)| 日期提取 | 汇总工作表 | 加密/解密单元格 | 按列表发送邮件 | 超级筛选 | 特殊筛选(筛选粗体单元格/斜体/删除线……) ...... | |
| 精选 15 工具集:12 文本工具(添加文本,删除特定字符,……)| 50+ 图表 类型(甘特图,……)| 40+ 实用公式(基于生日计算年龄,……)| 19 插入工具(插入二维码,从路径插入图片,……)| 12 转换工具(小写金额转大写,汇率转换,……)| 7 合并和拆分工具(高级合并行,分割单元格,……)|……更多 |
使用 Kutools for Excel 大幅提升您的 Excel 技能,体验前所未有的高效。Kutools for Excel 提供 300 多项高级功能,助您提升生产力、节省时间。立即点击此处,获取您最需要的功能……
Office Tab 为 Office 带来标签式界面,让您的工作更轻松
- 在 Word、Excel、PowerPoint、Publisher、Access、Visio 和 Project 中启用标签式编辑和阅读。
- 在同一个窗口的新标签页中打开并创建多个文档,而非在新窗口中。
- 将您的工作效率提升 50%,每天减少数百次鼠标点击!
所有 Kutools 插件,一个安装程序
Kutools for Office 套件捆绑了适用于 Excel、Word、Outlook 和 PowerPoint 的插件以及 Office Tab Pro,非常适合需要跨多个 Office 应用高效协作的团队。
- 一体化套件— Excel、Word、Outlook 和 PowerPoint 插件 + Office Tab Pro
- 一个安装程序,一个许可证— 几分钟内完成设置(支持 MSI)
- 协同效果更佳— 在多个 Office 应用中实现高效协同
- 30 天全功能试用— 无需注册,无需信用卡
- 超值之选— 比单独购买插件更省钱