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

求Formula或VBA:保留列重复值,移除行内重复值

Excel每行去重(保留列方向重复)解决方案

以下是三种实用方案,覆盖不同Excel版本需求:

方案1:动态数组公式(Excel 365/2021专属)

合并为单单元格展示

如果只需将每行唯一值合并到一个单元格,在目标单元格输入:

=BYROW(A1:D10,LAMBDA(r,TEXTJOIN(", ",TRUE,UNIQUE(r))))

替换A1:D10为你的实际数据区域,公式会自动遍历每行,提取唯一值并用逗号分隔。

保留原列结构(空出重复值位置)

要保持原列布局,重复值位置留空,输入:

=BYROW(A1:D10,LAMBDA(r,LET(u,UNIQUE(r),HSTACK(u,IF(SEQUENCE(,COLUMNS(r)-COLUMNS(u)),"")))))

公式会将每行唯一值从左到右排列,剩余列填充空白。

方案2:VBA宏(全Excel版本兼容)

适合需要批量处理且无动态数组功能的旧版Excel:

  1. 按Alt+F11打开VBA编辑器
  2. 右键左侧工程窗口→插入→模块
  3. 粘贴以下代码:
Sub RemoveRowDuplicates()
    Dim ws As Worksheet
    Dim lastRow As Long, lastCol As Long
    Dim i As Long, j As Long, k As Long
    Dim cellValue As Variant
    Dim uniqueValues As Collection
    
    Set ws = ActiveSheet ' 可修改为指定工作表,比如Sheets("你的表名")
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
    
    For i = 1 To lastRow
        Set uniqueValues = New Collection
        ' 收集该行唯一值
        For j = 1 To lastCol
            cellValue = ws.Cells(i, j).Value
            If cellValue <> "" Then
                On Error Resume Next
                uniqueValues.Add cellValue, Key:=CStr(cellValue)
                On Error GoTo 0
            End If
        Next j
        
        ' 清空行并重新写入唯一值
        ws.Rows(i).ClearContents
        For k = 1 To uniqueValues.Count
            ws.Cells(i, k).Value = uniqueValues(k)
        Next k
    Next i
    
    Set uniqueValues = Nothing
    Set ws = Nothing
    MsgBox "每行去重完成!"
End Sub
  1. 按F5运行宏,完成后会自动将每行重复值移除,唯一值靠左排列。

方案3:Power Query可视化操作

无需公式或代码,通过图形界面完成:

  1. 选中数据区域,点击「数据」→「从表格/区域」(若数据无标题,取消勾选「我的表格有标题」)
  2. 在Power Query编辑器中,选中所有列→「转换」→「逆透视列」→「逆透视其他列」
  3. 选中「属性」列→「删除重复项」(此时会删除每行内的重复值)
  4. 选中「行」列→「转换」→「透视列」,值列选择「值」,高级选项选「不要聚合」
  5. 点击「关闭并上载」,生成每行去重后的新表格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:24:20