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

Excel 365/VBA提取表格中与前序值不同的唯一行方案咨询

Excel提取三列组合唯一行解决方案

方案1:Excel函数(适用于Excel 365/2021及以上版本)

你之前使用UNIQUE未得到预期结果,大概率是仅传入了Value单列作为参数,只要将三列完整传入函数,即可返回三列组合完全唯一的所有行,直接在目标工作表的A1单元格输入如下公式即可:

=UNIQUE(原工作表名!A2:C1000)

参数说明:

  • 第一个参数替换为你实际的原始数据集三列范围
  • 函数默认按行去重、返回所有唯一行,无需额外设置参数
    该公式会自动溢出所有符合要求的行,相同Value下Name或Item不同的条目都会被完整保留。

方案2:VBA代码(适用于全版本Excel)

如果使用的是没有UNIQUE函数的低版本Excel,可以用VBA实现需求:

  1. 按Alt+F11打开VBA编辑器,右键点击左侧工作簿名称,选择「插入」-「模块」
  2. 将如下代码粘贴到模块编辑区:
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
  1. 按F5运行代码即可完成提取,你提供的示例数据中所有行的三列组合均不重复,运行后会全部输出到目标表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:15:04