该宏从Sheet3工作表中读取工资数据(第2行为表头,第3行起为员工数据),逐行生成工资条,每个员工包含表头行 + 数据行 + 空行,依次排列到新建的"工资条"工作表中。
Sub 生成工资条()Dim srcSheet As WorksheetDim destSheet As WorksheetDim lastRow As LongDim lastCol As LongDim i As LongDim destRow As Long'绑定工资数据源工作表Sheet3Set srcSheet = ThisWorkbook.Worksheets("Sheet3")'获取源数据范围lastRow = srcSheet.Cells(srcSheet.Rows.Count, "A").End(xlUp).RowlastCol = srcSheet.Cells(2, srcSheet.Columns.Count).End(xlToLeft).Column'清理已存在的工资条工作表Application.DisplayAlerts = FalseOn Error Resume NextThisWorkbook.Worksheets("工资条").DeleteOn Error GoTo 0Application.DisplayAlerts = True'新建工资条工作表Set destSheet = ThisWorkbook.Worksheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))destSheet.Name = "工资条"destRow = 1'逐行生成工资条,每个员工保留表头+空行方便裁剪For i = 3 To lastRow'复制表头行srcSheet.Range(srcSheet.Cells(2, 1), srcSheet.Cells(2, lastCol)).Copy _Destination:=destSheet.Cells(destRow, 1)'复制当前员工数据srcSheet.Range(srcSheet.Cells(i, 1), srcSheet.Cells(i, lastCol)).Copy _Destination:=destSheet.Cells(destRow + 1, 1)'自动调整列宽适配显示destSheet.Columns.AutoFit'预留空行方便裁剪destRow = destRow + 3DoEventsNext iMsgBox "工资条生成完成,请查看【工资条】工作表"End Sub

这里工资表标签名称是【Sheet3】改成自己的工资表标签,第一个是注释,可以不改。
'绑定工资数据源工作表Sheet3 Set srcSheet = ThisWorkbook.Worksheets("Sheet3") |
'绑定工资数据源工作表Sheet3 Set srcSheet = ThisWorkbook.Worksheets("工资表") |
方法2:使用 ActiveSheet.Name
'绑定工资数据源工作表 Set srcSheet = ThisWorkbook.Worksheets(ActiveSheet.Name) |
ActiveSheet.Name,为读取当前工作表名称。这样写最好在工资表做成按钮【生成工资条】,以免误操作其他表。
分两种讨论:一是表头标题是1行,其他都是工资数据;二表头标题是两行和表尾两行统计。
情况1:表头标题是1行,其他都是工资数据

情况2:表头标题是两行和表尾两行统计

'获取源数据范围lastRow = srcSheet.Cells(srcSheet.Rows.Count, "A").End(xlUp).Row - 2lastCol = srcSheet.Cells(2, srcSheet.Columns.Count).End(xlToLeft).Column
'逐行生成工资条,每个员工保留表头+空行方便裁剪For i = 4 To lastRow'复制表头行srcSheet.Range(srcSheet.Cells(2, 1), srcSheet.Cells(3, lastCol)).Copy _Destination:=destSheet.Cells(destRow, 1)'复制当前员工数据srcSheet.Range(srcSheet.Cells(i, 1), srcSheet.Cells(i, lastCol)).Copy _Destination:=destSheet.Cells(destRow + 2, 1)'自动调整列宽适配显示destSheet.Columns.AutoFit'预留空行方便裁剪destRow = destRow + 4

二、写入
按【Alt+F11】组合键打开VBA编辑器。单击【插入】→【模块】菜单命令,可插入VBA模块。输入或粘贴VBA代码,保存关闭VB编辑器。





首次运行自动创建"工资条"工作表,后续运行会覆盖重建。工资条打印后可以删除工资条。




=600+(MATCH(销售部员工资料表!D3,{"专科以下","专科","本科","硕士","博士"},0)-1)*400
要改成:
=600+(MATCH(销售部员工资料表!$D$3,{"专科以下","专科","本科","硕士","博士"},0)-1)*400

Sub 相对引用转绝对引用()Dim cell As RangeFor Each cell In Selection.SpecialCells(xlCellTypeFormulas)If InStr(cell.Formula, "$") > 0 Thencell.Formula = Application.ConvertFormula(cell.Formula, xlA1, xlA1, xlRelative)Elsecell.Formula = Application.ConvertFormula(cell.Formula, xlA1, xlA1, xlAbsolute)End IfNextEnd Sub
按 【Alt + F11】 打开VBA编辑器
点击【插入】 → 【模块】
将上述代码粘贴到代码窗口中
关闭编辑器,在Excel中选中目标单元格区域。
按【Alt + F8】打开宏对话框,选择对应宏运行。









📝 一句话总结
📌 借贷不等于借钱贷款
这是会计专用符号,表示记账方向,与日常借贷语义完全无关
📌 左借右贷,永恒不变
任何一笔交易都必须同时记借方和贷方,且金额相等
📌 左手管去处,右手管来源
左边 = 钱去哪了(资产/成本/费用),右边 = 钱从哪来(负债/股本/利润)
📌 大拇指=增,小拇指=减,左右相反
记住手势口诀,借贷的精髓就掌握了
1.起征点:目前为5000元/月,全年共60,000元
2.专项扣除:包括三险一金(基本养老保险、基本医疗保险、失业保险、住房公积金)
3.专项附加扣除:包括子女教育、继续教育、大病医疗、住房贷款利息、住房租金、赡养老人等
4.月度个税计算公式:
A.月度应纳税所得额 = 税前工资− 5000元(起征点)− 五险一金个人部分− 专项附加扣除
B. 月度个税 = 月度应纳税所得额× 对应税率− 速算扣除数
个人所得税计算公式:
=MAX((I3-5000-J3-K3)*{3;10;20;25;30;35;45}%-{0;210;1410;2660;4410;7160;15160},0)
