2012-11-20 53 views
0

我很抱歉如果这个问题已经存在,我搜索了一段时间,但找不到任何东西。Excel合并/连接一列基于另一个值

我在Excel中有2列,我需要连接其中另一个值的值相同的1列的值。作为一个例子,我有这样的:

A | B 
12 | Value 1 
10 | Value 2 
13 | Value 3 
12 | Value 4 
10 | Value 5 

而且我想出去:

A | B 
12 | Value 1, Value 4 
10 | Value 2, Value 5 
13 | Value 3 

我有数千行和理想,我想它来创建与结果的新的工作表,而不是破坏现有的表格。 B列中还有一些空白值,我希望它忽略和不连接。

在此先感谢。

回答

1

试试这个:

Sub combineValues() 
    Dim dic As Dictionary 
    Dim key, val, i, p, k 
    Set dic = New Dictionary 
    For i = 1 To Worksheets(1).Range("A65536").End(xlUp).Row 
     key = Worksheets(1).Cells(i, 1).Value 
     val = Worksheets(1).Cells(i, 2).Value 
     If dic.Exists(key) Then 
      dic.Item(key) = dic.Item(key) & ", " & val 
     Else 
      dic.Add key, val 
     End If 
    Next 
    p = 1 
    For Each k In dic.Keys 
     Worksheets(2).Cells(p, 1) = k 
     Worksheets(2).Cells(p, 2) = dic.Item(k) 
     p = p + 1 
    Next 
End Sub 

请注意,你必须有“Microsoft脚本运行”,在“参考”,以便使用Dictionary

与测试以下[第1页]:在下列

1 value 1 
2 value 2 
3 value 3 
1 value 4 
1 value 5 
3 value 6 
3 value 7 
2 value 8 
1 value 9 
2 value 10 
2 value 11 
2 value 12 

结果[第2页]:

1 value 1, value 4, value 5, value 9 
2 value 2, value 8, value 10, value 11, value 12 
3 value 3, value 6, value 7 
+0

工作出色之前,太感谢你了! – Sean

0

我发现,路人的回答精美的作品,但对我来说,我有几个列,我运行这个在某些情况下,有空单元格。为了避免让,,,项,我添加了这个:

If val <> "" Then 

dic.Item(key) = dic.Item(key) & ", " & val