Excel 365/VBA提取表格中与前序值不同的唯一行方案咨询
Excel提取三列组合唯一行解决方案
方案1:Excel函数(适用于Excel 365/2021及以上版本)
你之前使用UNIQUE未得到预期结果,大概率是仅传入了Value单列作为参数,只要将三列完整传入函数,即可返回三列组合完全唯一的所有行,直接在目标工作表的A1单元格输入如下公式即可:
=UNIQUE(原工作表名!A2:C1000)
参数说明:
- 第一个参数替换为你实际的原始数据集三列范围
- 函数默认按行去重、返回所有唯一行,无需额外设置参数
该公式会自动溢出所有符合要求的行,相同Value下Name或Item不同的条目都会被完整保留。
方案2:VBA代码(适用于全版本Excel)
如果使用的是没有UNIQUE函数的低版本Excel,可以用VBA实现需求:
- 按
Alt+F11打开VBA编辑器,右键点击左侧工作簿名称,选择「插入」-「模块」 - 将如下代码粘贴到模块编辑区:
Sub 提取唯一行() Dim 原始表 As Worksheet, 目标表 As Worksheet Dim 行标识 As String, 去重字典 As Object Dim 最后一行 As Long, i As Long ' 替换为你实际使用的工作表名称 Set 原始表 = ThisWorkbook.Worksheets("Sheet1") Set 目标表 = ThisWorkbook.Worksheets("Sheet2") Set 去重字典 = CreateObject("Scripting.Dictionary") ' 清空目标表原有内容,复制表头 目标表.Cells.Clear 原始表.Range("A1:C1").Copy 目标表.Range("A1") ' 获取原始表数据最后一行行号 最后一行 = 原始表.Cells(原始表.Rows.Count, "A").End(xlUp).Row ' 遍历所有数据行去重 For i = 2 To 最后一行 ' 拼接三列内容为唯一标识,用特殊符号分隔避免误判重复 行标识 = 原始表.Cells(i, "A") & "|" & 原始表.Cells(i, "B") & "|" & 原始表.Cells(i, "C") If Not 去重字典.Exists(行标识) Then 去重字典.Add 行标识, i ' 复制唯一行到目标表 原始表.Range("A" & i & ":C" & i).Copy 目标表.Range("A" & 去重字典.Count + 1) End If Next i ' 自动调整目标表列宽 目标表.Columns("A:C").AutoFit MsgBox "提取完成,共得到" & 去重字典.Count & "条唯一行", vbInformation End Sub
- 按
F5运行代码即可完成提取,你提供的示例数据中所有行的三列组合均不重复,运行后会全部输出到目标表。
内容的提问来源于stack exchange,提问作者Andreas
相关产品推荐
相关产品推荐

