Excle如何将多个同ID的值,合并到一个单元格内,并以逗号隔开

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excle如何将多个同ID的值,合并到一个单元格内,并以逗号隔开相关的知识,希望对你有一定的参考价值。

我的数据有两列,一列是id有5000个不同的id;一列是xy坐标每个id有多个xy坐标。我想把相同id的坐标合并到该id对应的第一个xy单元格内,并以逗号隔开。

在C列将ID去重复C2=IFERROR(INDEX(A$1:A$10,SMALL(IF(MATCH(A$1:A$10,A$1:A$10,)=ROW($1:$10),ROW($1:$10),65536),ROW(A2))),"")

数组公式,同时按CTRL+SHIFT+ENTER结束公式。使公式前后出现大括号,下拉到任意。

D列根据C列ID唯一值合并xy坐标
D2=IFERROR(PHONETIC(OFFSET(A$1,MATCH(C2,A:A,)-1,,COUNTIF(A:A,C2),2)),"")

下拉公式到任意。

(缺点是坐标间没有逗号相隔,因PHONETIC不能合并纯数字,不好替换!)

参考技术A Function MLookup(val, array1 As Range, array2 As Range, f As Byte) As String
'val 为要查找的值
'array1 要在其中查找的矩形区域,可单列(行) 或多行多列
'array2 是要返回相应值的与array1等大的矩形区域
'f 为0时精确查找,为1时模糊查找
Dim c As Range, FirstAddress As String
With array1
Set c = .Find(val, .Cells(.Count), xlValues, f + 1)
If Not c Is Nothing Then
FirstAddress = c.Address
Do
MLookup = MLookup & "," & array2.Cells(c.Row - .Row + 1, c.Column - .Column + 1).Text
Set c = .Find(val, c, xlValues, f + 1)
Loop Until c.Address = FirstAddress
End If
MLookup = Mid(MLookup, 2)
End With
End Function
以上为自定义函数Mlookup的vba代码,可以实现
参考技术B 写代码可以实现

以上是关于Excle如何将多个同ID的值,合并到一个单元格内,并以逗号隔开的主要内容,如果未能解决你的问题,请参考以下文章

有关java通过poi处理excle中合并单元格的问题

请教!excel单元格内的数值发生变化时如何保留它以前的值

excel两个单元格内容合并不了怎么办?

excel合并单元格内容的教程

怎么将Excel单独两列内容合并为一列

ireport合并单元格