在单元格中连接不同的列值

让我们把'大'excel这样:

A |B ab |ef |oo ut | |oo ut |ef 

我需要的是一个新的行 ,每列的所有不同值的总结:

 A |B ab |ef |oo ut | |oo ut |ef ab,ut |ef,oo <- new row with the 'summary' 

注意:我可以手工复制每列结尾的公式, 我只需要公式

以下是一个函数,可用于连接单元格中的唯一列值

 Function UniqueItem(InputRange As Range) As Variant Dim cl As Range, cUnique As New Collection, cValue As Variant Application.Volatile On Error Resume Next For Each cl In InputRange If cl.Formula <> "" Then cUnique.Add cl.Value, CStr(cl.Value) End If Next cl UniqueItem = "" For i = 1 To cUnique.Count If UniqueItem = "" Then UniqueItem = UniqueItem & cUnique(i) ElseIf UniqueItem <> "" Then UniqueItem = UniqueItem & ", " & cUnique(i) End If Next On Error GoTo 0 End Function 

如何使用这个function1.打开excel文件2.按Alt + F11 3.创build一个新模块并粘贴代码4.回到excel文件并select你想要的结果单元5.input公式as = UniqueItem(A1:A5)A1:A5指定范围。 你可以指定任何范围。

请在以下链接中find示例文件: Concatenate_different_columns_values_in_a_cell.xlsm

用一些技巧(和一个额外的列),你可以这样做下面的方法。

在第1行到第6行,我放了一些随机文本。 在列BI中放置下面的公式。

B1:= IF(COUNTIF($ A $ 1:$ A1,A1)= 1,A1&“,”,“”)

B2:= IF(COUNTIF($ A $ 1:$ A2,A2)= 1,A2&“,”,“”)

B3:= IF(COUNTIF($ A $ 1:$ A3,A3)= 1,A3&“,”,“”)

B4:= IF(COUNTIF($ A $ 1:$ A4,A4)= 1,A4&“,”,“”)

B5:= IF(COUNTIF($ A $ 1:$ A5,A5)= 1,A5&“,”,“”)

B6:= IF(COUNTIF($ A $ 1:$ A6,A6)= 1,A6&“,”,“”)

B7:= SUBSTITUTE(B1&B2&B3&B4&B5&B6&“,”,“,”,“”)

这里的想法是,search列表从第1行增长到结束,并标记任何唯一的值。 如果B1到B6中的语句为真,则使用A的值,并添加a,{空格}。 在B7中,我只是连接所有的值,然后在最后添加一个额外的逗号。 替代方法将最后一个空格{空格}除去,确保列表不会以逗号结尾。

您可以将B1的公式粘贴到单元格B1中,然后将公式向下粘贴。 相对引用自动增加search数组。

理解。 一种(不是那么高雅)的方式如下…设置C1:= B1,C2:= B1&B2,然后将C2一直复制到最后….另一方面,我认为这可能会更好由VBA解决scheme提供服务。

另外,你可以使用这个…

http://mcgimpsey.com/excel/udfs/multicat.html

问候,

罗伯特·伊尔布林克