我有一个excel数据如下,我想连接按逗号分隔的技能,按照这样的人名;我怎样才能连接行文本与逗号在Excel中?
Irakli Beridze | C#, Python, Java
Parpali Zurashvili | C++, C
我可以根据以下sceanorio来实现,但我有n个数据行。
我有一个excel数据如下,我想连接按逗号分隔的技能,按照这样的人名;我怎样才能连接行文本与逗号在Excel中?
Irakli Beridze | C#, Python, Java
Parpali Zurashvili | C++, C
我可以根据以下sceanorio来实现,但我有n个数据行。
您可以使用辅助柱这样做:
插入过滤器和排序的名字:
在C2单元格,放公式:
=IF(A2=A3,0,1)
0
会里的“副本”将和1
会里的最后一行,以保持会。
在单元格D2,放B2的值,在D3,把下面的公式:
=IF(A3=A2,D2&", "&B3,B3)
既然这样做了,复制并在列d糊值(复制整列,使用特殊粘贴并选择'值')。取下过滤器,加回过滤器,但这次在全部4列和C列上0
过滤:
删除这些行并清除过滤器。最后,排序列A:
现在,您可以删除列B和C.
如果你不介意的话,你的VBA可以使用以下:
Sub ConcatRows()
Dim arr As Variant
Dim i As Long
Dim d As Dictionary
'Create a dictionary to hold all Name and Skill Values
Set d = CreateObject("Scripting.Dictionary")
'Fill an array with all Values
arr = Range("A2", Cells(Rows.Count, 2).End(xlUp))
'Loop the Values and and them into a dictionary
For i = LBound(arr) To UBound(arr)
'If Name already in list then Add Skill to Item value of Name Key
If d.Exists(arr(i, 1)) Then
d(arr(i, 1)) = d(arr(i, 1)) & ", " & arr(i, 2)
'If Name isn't already in list then add name with its first Skill
Else
d.Add arr(i, 1), arr(i, 2)
End If
Next i
'Write all Name back to Worksheet
Range("A2").Resize(d.Count) = Application.Transpose(d.Keys)
'Write all Skills Back to worksheet
Range("B2").Resize(d.Count) = Application.Transpose(d.Items)
End Sub
重复同一个人的技能是否会成为问题? – user2140261