合并单行上的唯一单元格值

合并单行上的唯一单元格值

参见下图,其中显示了我的 3 个输入(A:C 列)和预期输出(D 列)。

我想列出每行的唯一值作为输出,用逗号分隔。

在此处输入图片描述

答案1

在单元格 D1 中使用:

=TRIM(A1&IF(COUNTIF(A1:C1,B1)>1,"",","&B1)&IF(COUNTIF(A1:C1,C1)>1,"",","&C1))

然后向下拖动。

如果有更多列,则将&IF(COUNTIF(A1:C1,C1)>1,"",","&C1)C1 更改为 D1 作为第四列,将 C1 更改为 E1 作为第五列,依此类推。

还可以进行更改A1:C1COUNTIF适应您可能使用的列数范围。

答案2

如果您有 Office 365 Excel,那么您可以使用 TEXTJOIN 作为数组公式:

=TEXTJOIN(",",TRUE,IF(COLUMN(A2:C2)=MATCH(A2:C2,A2:C2,0),A2:C2,""))

作为数组公式,退出编辑模式时需要使用 Ctrl-Shift-Enter 而不是 Enter 进行确认。

这将进行迭代并测试该实例是否是第一个,如果是,则将其添加到字符串中。

在此处输入图片描述

答案3

这个简单的 UDF 将帮助您组合用逗号分隔的单元格中的唯一值。

  • 将此代码作为模块与相关工作表一起插入。

      Function CombineUnique(xRg As Range, xChar As String) As String
    
      Dim xCell As Range
      Dim xDic As Object
      Set xDic = CreateObject("Scripting.Dictionary")
      For Each xCell In xRg
          xDic(xCell.Value) = Empty
      Next
      CombineUnique = Join$(xDic.Keys, xChar)
      Set xDic = Nothing
      End Function  
    

怎么运行的:

  • 在运行此 UDF 之前添加Microsoft 脚本运行时使用工具、参考资料 在 VB 编辑器窗口中。

  • 为了获得所需的结果,请在单元格中D2写入下面的
    公式并填写。

    =CombineUnique(A2:C2,",")

笔记, 根据需要调整公式中的单元格引用。

相关内容