请写一段VBA代码,帮我解决以下问题:我有一个exl表格,表格中有一个表叫sheet1,sheet1中有两列数据,第一列叫“hospitalID”,第二列叫“tag”。“医院ID”这列数据有重复,对应“tag”中的多个值。请将“hospitalID”去除重复,“tag”中的多个值合并到一个单元格中,呈现形式为“x+y+z”的形式。将新产生的数据写入到sheet2中。
时间: 2023-12-25 15:05:44 浏览: 72
以下是VBA代码的实现:
```VBA
Sub combineTags()
Dim lastRow As Long, i As Long
Dim dict As Object, key As Variant
Dim arr() As String
'获取sheet1的最后一行
lastRow = Worksheets("sheet1").Cells(Rows.Count, 1).End(xlUp).Row
'创建字典对象
Set dict = CreateObject("Scripting.Dictionary")
'遍历sheet1中的数据
For i = 2 To lastRow
If Not dict.exists(Worksheets("sheet1").Range("A" & i).Value) Then
'将医院ID添加到字典中
dict.Add Worksheets("sheet1").Range("A" & i).Value, Worksheets("sheet1").Range("B" & i).Value
Else
'将tag合并到已存在的医院ID对应的值中
dict(Worksheets("sheet1").Range("A" & i).Value) = dict(Worksheets("sheet1").Range("A" & i).Value) & "+" & Worksheets("sheet1").Range("B" & i).Value
End If
Next i
'将结果写入sheet2
Worksheets("sheet2").Range("A1").Value = "hospitalID"
Worksheets("sheet2").Range("B1").Value = "tag"
i = 2
For Each key In dict.keys
Worksheets("sheet2").Range("A" & i).Value = key
arr = Split(dict(key), "+")
Worksheets("sheet2").Range("B" & i).Value = Join(arr, "+")
i = i + 1
Next key
End Sub
```
使用方法:
1. 将上述代码复制到一个新的VBA模块中;
2. 打开需要处理的Excel表格,按下Alt+F8打开宏,运行"combineTags"宏即可;
3. 处理结果将会写入到sheet2中。
注意:代码中假设sheet2已经存在,如果sheet2不存在,需要先新建一个sheet2。
阅读全文