2016 - 2024

感恩一路有你

如何用Excel VBA计算并合并同一姓名的工资

浏览量:4462 时间:2024-07-19 14:43:58 作者:采采

在日常工作中,经常会遇到以下情况:

  1. 工资表按部门分为多个表,不同的部门会有同名的人。
  2. 同一部门中的某个人可能担任不同的职位,他的工资就分在几行里。
  3. 现在需要将所有部门人员的工资汇总到一个表中,如果某个人的工资占据了多行,则需要合并姓名列和工资。

下面是具体的操作步骤:

步骤1:另存为启用宏的工作表

首先将工资表另存为启用宏的工作表(*.xlsm)。

步骤2:新建工作表并命名为汇总

在Excel中新建一个工作表,并将其命名为“汇总”。

步骤3:复制VBA代码

右键点击汇总表的表头,选择“查看代码”进入VBA编辑器。将以下代码复制到编辑器中:

Sub 合并汇总()
    Application.DisplayAlerts  False '禁止合并单元格时出现警告
    '以下为合并表格
    Dim sht As Worksheet, xrow As Integer
    For Each sht In Worksheets
        If  <>  Then
             '复制整表
            ActiveSheet.Range("a65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:xlPasteFormulas '从第一个空行选择性粘贴
        End If
    Next
    '以下删除第一行和多余的标题行
    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:运行代码

点击运行按钮,执行上述代码。

步骤5:查看结果

运行结果如下所示。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。