0

如果这个问题已经存在,我很抱歉,我搜索了一段时间但找不到任何东西。

我在 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 列中还有一些空白值,我希望它忽略而不连接。

提前致谢。

4

2 回答 2

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
于 2012-11-20T11:46:15.937 回答
0

我发现路人的答案效果很好,但就我而言,我有几列可以运行它,在某些情况下还有空单元格。为避免获得 , , , 条目,我添加了以下内容:

If val <> "" Then

dic.Item(key) = dic.Item(key) & ", " & val
于 2014-03-17T16:18:32.547 回答