=IF(B2=B1,"",MID(SUBSTITUTE(PHONETIC(OFFSET($B$1,MATCH(B2,$B$2:$B$114,),0,COUNTIF($B$2:$B$114,B2),2)),B2,","),2,999))
1、OFFSET函数
OFFSET(reference位移起点,rows上下移动位置,cols左右移动位置,height区域高度,width区域宽度)
![60db27ff24663a3f5507079e24006cc8.png](https://i-blog.csdnimg.cn/blog_migrate/76863c02413c57c6aa4c5c738a016af3.jpeg)
MATCH(B2,$B$2:$B$114,)计算重复项在所有重复项区域的位置,作为OFFSET函数的上下位移参数,
COUNTIF($B$2:$B$114,B2)计算重复项在所有重复项区域的出现次数,作为OFFSET函数的高度参数。
2、PHONETIC函数
PHONETIC函数能将OFFSET区域的内容分行将记录依次合并,并在一个单元格展示。
![edb512df66fd8911dbfd75d7fb7f7cde.png](https://i-blog.csdnimg.cn/blog_migrate/6f763b9e097865e7cffa69ccdb10d2ab.jpeg)
3、SUBSITUTE函数
SUBSITUTE将重复项目替换成逗号","。
4、MID函数
MID函数提取除第一个逗号外的所有内容,999表示合并后的文本长度,如果文本长度超过999,可以重新修改。
5、IF函数
最外层IF函数是对第一次出现的记录显示合并后字符,第二次以后出现相同记录则显示为空,意思是保留第一次文本合并内容,这里需要在填写公式前按照关键项目(B列)进行排序后,再填写,否则会导致错误,关键项目和需要合并的字符串列必须是相邻两列,当中间有其他列时,将达不到效果。