如何用Excel VBA計算并合并同一姓名的工資
在日常工作中,經(jīng)常會遇到以下情況: 工資表按部門分為多個表,不同的部門會有同名的人。 同一部門中的某個人可能擔(dān)任不同的職位,他的工資就分在幾行里。 現(xiàn)在需要將所有部門
在日常工作中,經(jīng)常會遇到以下情況:
- 工資表按部門分為多個表,不同的部門會有同名的人。
- 同一部門中的某個人可能擔(dān)任不同的職位,他的工資就分在幾行里。
- 現(xiàn)在需要將所有部門人員的工資匯總到一個表中,如果某個人的工資占據(jù)了多行,則需要合并姓名列和工資。
下面是具體的操作步驟:
步驟1:另存為啟用宏的工作表
首先將工資表另存為啟用宏的工作表(*.xlsm)。
步驟2:新建工作表并命名為匯總
在Excel中新建一個工作表,并將其命名為“匯總”。
步驟3:復(fù)制VBA代碼
右鍵點擊匯總表的表頭,選擇“查看代碼”進(jìn)入VBA編輯器。將以下代碼復(fù)制到編輯器中:
Sub 合并匯總() Application.DisplayAlerts False '禁止合并單元格時出現(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 '從第一個空行選擇性粘貼 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 '計算同名的總工資 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)行代碼
點擊運(yùn)行按鈕,執(zhí)行上述代碼。
步驟5:查看結(jié)果
運(yùn)行結(jié)果如下所示。