请写一段VBA代码,帮我解决以下问题:我有一个exl表格,表格中有两列数据,第一列叫“医院ID”,第二列叫“tag”。“医院ID”这列数据有重复,对应“tag”中的多个值。请将“医院ID”去除重复,“tag”中的多个值合并到一个单元格中,呈现形式为“x+y+z”的形式。
时间: 2023-09-07 21:12:48 浏览: 91
EXCEL VBA 删除重复数据
5星 · 资源好评率100%
非常感谢您的提问,以下是解决该问题的 VBA 代码:
```
Sub mergeTags()
Dim lastRow As Long
Dim hospitalDict As Object
Dim hospitalID As String
Dim tagList As Object
Dim currentTag As String
Dim i As Long
'获取最后一行的行数
lastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
'创建字典对象
Set hospitalDict = CreateObject("Scripting.Dictionary")
'循环遍历每一行数据
For i = 2 To lastRow
hospitalID = Cells(i, 1).Value
currentTag = Cells(i, 2).Value
'检查该医院ID是否在字典中
If hospitalDict.Exists(hospitalID) Then
'如果存在,则将当前tag添加到对应的列表中
Set tagList = hospitalDict.Item(hospitalID)
If Not tagList.Exists(currentTag) Then
tagList.Add currentTag, Nothing
End If
Else
'如果不存在,则创建新的列表,将当前tag加入
Set tagList = CreateObject("Scripting.Dictionary")
tagList.Add currentTag, Nothing
hospitalDict.Add hospitalID, tagList
End If
Next i
'清空表格
Range("A2:B" & lastRow).ClearContents
'将去重后的数据写入表格
i = 2
For Each hospitalID In hospitalDict.Keys
Set tagList = hospitalDict.Item(hospitalID)
Cells(i, 1).Value = hospitalID
Cells(i, 2).Value = Join(tagList.Keys, "+")
i = i + 1
Next hospitalID
End Sub
```
该代码通过使用字典对象来记录每个医院ID对应的标签列表,然后对数据进行去重和合并。请注意,在使用之前,您需要将代码中的数据表格范围修改为您实际使用的范围。
阅读全文