昨天人生中第一张工资条

就这样被剥削了

具有重大意义,应该收藏

### 使用VBA拆分工资条的示例代码 在 VBA 中,可以通过操作工作表和单元格来实现将一张工资条拆分成多张工资条的功能。以下是基于问题描述提供的一个完整示例代码[^1]。 ```vba Sub SplitPaySlip() Dim wsSource As Worksheet Dim wsTarget As Worksheet Dim lastRow As Long Dim i As Long Dim j As Long Dim employeeName As String ' 设置源工作表为当前活动的工作表 Set wsSource = ThisWorkbook.Sheets(1) ' 假设源数据在第一个工作表中 ' 获取源工作表的最后一行 lastRow = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row ' 遍历源工作表中的每一行数据 For i = 2 To lastRow ' 假设第一行为标题行 employeeName = wsSource.Cells(i, 1).Value ' 获取员工姓名 ' 检查是否已存在该员工的工作表 On Error Resume Next Set wsTarget = ThisWorkbook.Sheets(employeeName) On Error GoTo 0 If wsTarget Is Nothing Then ' 如果不存在,则创建新工作表 Set wsTarget = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)) wsTarget.Name = employeeName ' 复制标题行到新工作表 wsSource.Rows(1).Copy Destination:=wsTarget.Rows(1) End If ' 将当前行的数据复制到对应员工的工作表中 j = wsTarget.Cells(wsTarget.Rows.Count, "A").End(xlUp).Row + 1 wsSource.Rows(i).Copy Destination:=wsTarget.Rows(j) Next i MsgBox "工资条拆分完成!", vbInformation End Sub ``` ### 代码说明 - **`wsSource`**:表示包含原始工资条数据的工作表。 - **`wsTarget`**:表示每个员工对应的独立工资条工作表。 - **`lastRow`**:用于确定源工作表中数据的最后一行。 - **`employeeName`**:从源工作表的第一列提取员工姓名,作为新工作表的名称。 - **循环逻辑**:遍历源工作表的每一行数据,检查是否存在以员工姓名命名的工作表。如果不存在,则创建新工作表并复制标题行;然后将当前行的数据复制到对应员工的工作表中[^2]。 ### 注意事项 - 在运行代码前,请确保源工作表中的数据格式正确,且第一列为员工姓名。 - 如果员工姓名包含特殊字符或过长,可能会导致工作表命名失败。可以考虑对员工姓名进行预处理,例如替换特殊字符[^3]。 - 如果需要进一步优化代码,可以添加错误处理机制,以防止意外中断程序执行。 ---
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值