如何用Excel VBA計(jì)算并合并同一姓名的工資
在日常工作中,經(jīng)常會(huì)遇到以下情況: 工資表按部門分為多個(gè)表,不同的部門會(huì)有同名的人。 同一部門中的某個(gè)人可能擔(dān)任不同的職位,他的工資就分在幾行里。 現(xiàn)在需要將所有部門
在日常工作中,經(jīng)常會(huì)遇到以下情況:
- 工資表按部門分為多個(gè)表,不同的部門會(huì)有同名的人。
- 同一部門中的某個(gè)人可能擔(dān)任不同的職位,他的工資就分在幾行里。
- 現(xiàn)在需要將所有部門人員的工資匯總到一個(gè)表中,如果某個(gè)人的工資占據(jù)了多行,則需要合并姓名列和工資。
下面是具體的操作步驟:
步驟1:另存為啟用宏的工作表
首先將工資表另存為啟用宏的工作表(*.xlsm)。
步驟2:新建工作表并命名為匯總
在Excel中新建一個(gè)工作表,并將其命名為“匯總”。
步驟3:復(fù)制VBA代碼
右鍵點(diǎn)擊匯總表的表頭,選擇“查看代碼”進(jìn)入VBA編輯器。將以下代碼復(fù)制到編輯器中:
Sub 合并匯總()
Application.DisplayAlerts False '禁止合并單元格時(shí)出現(xiàn)警告
'以下為合并表格
Dim sht As Worksheet, xrow As Integer
For Each sht In Worksheets
If <> Then
'復(fù)制整表
ActiveSheet.Range("a65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:xlPasteFormulas '從第一個(gè)空行選擇性粘貼
End If
Next
'以下刪除第一行和多余的標(biāo)題行
Rows(1).Delete
Dim x As Integer
For x 2 To
If Cells(x, 1) "姓名" Then
Rows(x).Delete
End If
Next x
'以下為排序
heng
lie
Range(Cells(2, 1), Cells(heng, lie)).Sort Key1:Range("B1"), Key2:Range("A1")
'以下為合并同名單元格
Dim i As Integer
Dim first As Integer
Dim last As Integer
first 2
last 2
For i 2 To
If Cells(i, 1) Cells((i - 1), 1) Then
'計(jì)算同名的總工資
Cells(first, 6) (Range(Cells(first, 6), Cells(last, 6)))
'合并姓名
Range(Cells(first, 1), Cells(last, 1)).Select
'合并工資
Range(Cells(first, 6), Cells(last, 6)).Select
first i 1
End If
Next i
End Sub
步驟4:運(yùn)行代碼
點(diǎn)擊運(yùn)行按鈕,執(zhí)行上述代碼。
步驟5:查看結(jié)果
運(yùn)行結(jié)果如下所示。