高分求教EXCEL合并问题。高手请进

来源:百度知道 编辑:UC知道 时间:2024/05/10 18:04:18
A列 B列 C列
abc1@yahoo.com 小张 abc1@yahoo.com 小张,小王,小赵,小马
abc1@yahoo.com 小王
abc1@yahoo.com 小赵
abc1@yahoo.com 小马
ddegge5@gmail.com 蛋蛋 ddegge5@gmail.com 蛋蛋,西西
ddegge5@gmail.com 西西
ffegh7@sina.com 肥肥 ffegh7@sina.com 肥肥,试试,哥哥
ffegh7@sina.com 试试
ffegh7@sina.com 哥哥
bbce4@hotmail.com 天天 bbce4@hotmail.com 天天,娃娃,安安,琪琪,菜菜
bbce4@hotmail.com 娃娃
bbce4@hotmail.com 安安
bbce4@hotmail.com 琪琪
bbce4@hotmail.com 菜菜
……有N行 ……有N行

想吧AB 合成C

因为这个要用到不固定项的文本连接,EXCEL自身的函数很难实现,用了自定义的文本连接函数,此函数出自EXCELHOME,自己改了一下,加入了分隔符条件
先排好序,若数据是从第一行开始,C1公式:
=IF(COUNTIF($A$1:A1,A1)=1,A1&" "&contxt(",",OFFSET(B1,0,0,COUNTIF($A$1:$A$14,A1))),"")
自定义函数代码如下:
Option Explicit
Function ConTxt(x, ParamArray args() As Variant) As Variant
Dim tmptext As Variant, i As Variant, cellv As Variant
Dim cell As Range
tmptext = ""

For i = 0 To UBound(args)
If Not IsMissing(args(i)) Then
Select Case TypeName(args(i))
Case "Range"
For Each cell In args(i)
If cell <> "" Then tmptext = tmptext & cell & x
Next cell
Case "Variant()"
For Each cellv In args(i)
If cellv <> "" Then tmptext = tmptext & cellv & x
Next cellv
Case Else
If args(i) <> "" Then tmptext = tmptext & args(i) & x
End Select
End If
Next i