让我们像这样嘲笑'大'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'
注意:我可以手动复制每列末尾的公式,我只需要公式
答案 0 :(得分:2)
以下是一个可用于连接单元格中唯一列值的函数
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
如何使用此功能 1.打开excel文件 2.按Alt + F11 3.创建一个新模块并将代码粘贴到其中 4.返回excel文件并选择要获得结果的单元格 5.输入公式为= UniqueItem(A1:A5)A1:A5指定范围。您可以指定任何范围。
请在以下链接中找到示例文件:Concatenate_different_columns_values_in_a_cell.xlsm
答案 1 :(得分:0)
使用一些技巧(以及额外的列),您可以通过以下方式执行此操作。
在A栏第1行至第6行中,我放置了一些随机文本。 在B栏中,我放置了以下公式。
B1:= IF(COUNTIF($ A $ 1:$ A1,A1)= 1,A1&amp;“,”,“”)
B2:= IF(COUNTIF($ A $ 1:$ A2,A2)= 1,A2&amp;“,”,“”)
B3:= IF(COUNTIF($ A $ 1:$ A3,A3)= 1,A3&amp;“,”,“”)
B4:= IF(COUNTIF($ A $ 1:$ A4,A4)= 1,A4&amp;“,”,“”)
B5:= IF(COUNTIF($ A $ 1:$ A5,A5)= 1,A5&amp;“,”,“”)
B6:= IF(COUNTIF($ A $ 1:$ A6,A6)= 1,A6&amp;“,”,“”)
B7:= SUBSTITUTE(B1&amp; B2&amp; B3&amp; B4&amp; B5&amp; B6&amp;“,”,“,,”,“”)
这里的想法是搜索列表从第1行增长到结尾并标记任何唯一值。如果B1到B6中的语句为真,则使用A中的值,并添加a,{space}。 在B7中,我只是连接所有值,然后在最后添加一个额外的逗号。 替换删除了最后一个{space},没有任何内容,有效地确保列表不以逗号结尾。
您可以在单元格B1中粘贴B1的公式,然后只需粘贴公式。相对引用会自动增加搜索数组。
了解。一个(不那么优雅)的方式如下......设置C1:= B1,C2:= B1&amp; B2,然后将C2一直复制到最后....另一方面,我认为这可能更好地服务于VBA解决方案。
或者,您可以使用此...
http://mcgimpsey.com/excel/udfs/multicat.html
此致
罗伯特·伊尔布林克