我的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的直接邮件(邮件列表),但我不想为每个协调员发送多封电子邮件,每个邮件中都有一名员工。
答案 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
,
代码会创建一个名为newSheet
的新工作表,并将值放在其中,如下所示