使用VBA将多个excel表格根据相同的“员工姓名”合并成一个excel
时间: 2023-10-08 11:08:41 浏览: 217
Excel模板现金日记账表.zip
可以使用VBA中的Dictionary对象和Worksheet对象来实现这个功能。具体步骤如下:
1. 创建一个新的excel表格,用于合并数据。
2. 在VBA编辑器中创建一个新的模块,编写以下代码:
```
Sub MergeData()
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
Dim wb As Workbook
Set wb = ThisWorkbook
Dim wsMerge As Worksheet
Set wsMerge = wb.Sheets(1)
Dim ws As Worksheet
For Each ws In wb.Worksheets
If ws.Name <> wsMerge.Name Then
Dim lastRow As Long
lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
Dim i As Long
For i = 2 To lastRow
Dim name As String
name = ws.Cells(i, 1).Value
If Not dict.exists(name) Then
dict.Add name, ws.Cells(i, 2).Value
Else
dict(name) = dict(name) + ws.Cells(i, 2).Value
End If
Next i
End If
Next ws
wsMerge.Cells(1, 1).Value = "员工姓名"
wsMerge.Cells(1, 2).Value = "工资总额"
Dim j As Long
j = 2
For Each key In dict.keys
wsMerge.Cells(j, 1).Value = key
wsMerge.Cells(j, 2).Value = dict(key)
j = j + 1
Next key
End Sub
```
3. 在代码中,首先创建一个Dictionary对象,用于存储每个员工的工资总额。然后遍历所有的工作表,对于每个工作表,从第二行开始遍历每一行,将每个员工的工资累加到Dictionary对象中。最后将结果写入新建的表格中。
4. 运行代码,即可将多个excel表格根据相同的“员工姓名”合并成一个excel。
需要注意的是,代码中假设员工姓名在第一列,工资在第二列。如果实际情况不同,需要修改代码中的行号和列号。
阅读全文