Excel 连接单元格中的不同列和值

Excel 连接单元格中的不同列和值,excel,Excel,让我们像这样使用“大型”excel: A |B ab |ef |oo ut | |oo ut |ef 我需要的是一个新行,包含每列所有不同值的摘要: A |B ab |ef |oo ut | |oo ut |ef ab,ut

让我们像这样使用“大型”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'
A | B
ab|ef
|哦
ut|
|哦
ut | ef
ab,ut | ef,oo通过一些技巧(和一个额外的列),您可以通过以下方式完成此操作

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

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:=替代品(B1&B2&B3&B4&B5&B6&“,”,“,”,“,”)

这里的想法是搜索列表从第1行一直增长到最后,并标记任何唯一的值。如果B1到B6中的语句为true,则使用来自A的值并添加,{space}。 在B7中,我只是连接所有值,然后在末尾添加一个额外的逗号。 替换将删除最后一个{space},而不删除任何内容,有效地确保列表不会以逗号结尾

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

明白。一种(不那么优雅的)方式是如下。。。设置C1:=B1,C2:=B1和B2,然后将C2复制到底。。。。另一方面,我认为VBA解决方案可能更好地满足这一需求


或者,你可以用这个

问候,


Robert Ilbrink

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

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
函数唯一项(输入范围作为范围)作为变量
Dim cl作为系列,cUnique作为新系列,cValue作为变体
应用程序。挥发性
出错时继续下一步
对于输入范围中的每个cl
如果cl.公式为“”,则
城市附加价值,CStr(核心价值)
如果结束
下一个cl
UniqueItem=“”
对于i=1到cUnique.Count
如果UniqueItem=“”,则
UniqueItem=UniqueItem和cUnique(一)
如果是唯一项“”,则
UniqueItem=UniqueItem&“,”和cUnique(一)
如果结束
下一个
错误转到0
端函数
如何使用此功能 1.打开excel文件 2.按Alt+F11 3.创建一个新模块并将代码粘贴到其中 4.返回excel文件并选择想要得到结果的单元格 5.输入公式as=UniqueItem(A1:A5)A1:A5指定范围。您可以指定任何范围


请在以下链接中找到示例文件:

您的意思是需要一个公式来查找列中的唯一值吗?@KannanS,是的,并将其连接到单个单元格中。我认为您可能需要使用宏来执行此操作。我不确定是否有任何公式可以做到这一点。如果你对宏没问题,那么我可以帮你。@KannanS,宏很好。我为你制定了一个函数。请看一下我的答案。正如我所说,excel很大(>2K行)。对我来说,你的方法是正确的,除了最后一个公式(B7)。对不起,没有在原始问题中解释这一点。我明白了。一种(不那么优雅的)方式是如下。。。设置C1:=B1,C2:=B1和B2,然后将C2复制到底。。。。另一方面,我认为使用VBA解决方案可能会更好。对不起,我错卖了。如果excel有1K,那么B7如何?替代品(B1&B2&B3&B4&B5&B6&…B1000“,”,“,”,“,”)?或者,您可以使用此…也许是最佳解决方案。你能编辑你的帖子来包含这个吗?