Excel合并具有重复值的第一列和具有不同值的第三列

时间:2017-05-23 14:47:16

标签: excel vba

我的Excel中有以下表格:

| Coordinator name | Coordinator Email | Employee Name |
|:-----------------|------------------:|:-------------:|
| XXXXXXXXXX       | XXXXXXX@XXX       |     YYYY     
| XXXXXXXXXX       | XXXXXXX@XXX       |     XPTO

所以在这张表中我有很多相同的协调员,它们有不同的员工姓名。我想要做的是,在所有相等协调员值的逗号分隔的值中转换员工姓名列。例如:

| Coordinator name | Coordinator Email | Employee Name |
|:-----------------|------------------:|:-------------:|
| XXXXXXXXXX       | XXXXXXX@XXX       |     YYYY,XPTO     
| BBBBBBBBBB       | BBBBBBB@XXX       |     XYZ, ABC

我需要这个用于发送带有Word的直接邮件(邮件列表),但我不想为每个协调员发送多封电子邮件,每个邮件中都有一名员工。

1 个答案:

答案 0 :(得分:1)

试试这段代码,

Sub mergeDup()
Dim i As Long, str As String, j As Long
Columns("A:C").Sort key1:=Range("A2"), order1:=xlAscending, Header:=xlYes
Sheets.Add.Name = "newSheet"
Rows(1).Copy Destination:=Sheets("newSheet").Cells(1, 1)
j = Sheets("newSheet").Cells(Rows.Count, 1).End(xlUp).Row
str = Cells(2, 3)
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    If Cells(i, 1) = Cells(i + 1, 1) Then
        str = str & "," & Cells(i + 1, 3)
    Else
        Rows(i).Copy Destination:=Sheets("newSheet").Cells(j + 1, 1)
        Sheets("newSheet").Cells(j + 1, 3) = str
        str = Cells(i + 1, 3)
        j = Sheets("newSheet").Cells(Rows.Count, 1).End(xlUp).Row
    End If
Next i
End Sub

如果您的数据范围如下columns A to C

enter image description here

代码会创建一个名为newSheet的新工作表,并将值放在其中,如下所示

enter image description here