一分钟掌握 Excel VBA 技巧,轻松批量生成工资条,提高工作效率!

news2024/9/21 3:06:51

可能大家忽视了一点,Excel是我们日常办公中使用最多的工具,所以,学好Excel并加以运用,一定能提升你的工作效率,比如Excel VBA可以用代码实现自动化办公,下面举一个Excel VBA批量生成工资条的办公小案例。

批量生成工资条这种方法适于一些保密性较高数据,如薪酬、加班补贴等数据,需要将数据批量处理为单一数据,这里就可以使用 Excel VBA 来处理,如果你不了解VBA的使用,可参考前一节内容:Excel VBA:批量合并数据

1.数据演示

如下是一张工资表,包含每位员工的基本工资和提成点,由于企业中对于员工工资都有保密制度,现需要将每一位员工自己的基本工资和提成点分别发给对应的员工,常规做法是手动复制粘贴,这种方法效率很慢。

2.编写VBA

接下来,我将使用Excel VBA编写代码批量生成员工工资条,在 Excel 中点击 "开发工具" 选项卡,点击 "Visual Basic" 按钮,打开 VBA 编辑器,VBA代码都是写在VBA 编辑器运行。

如下即为VBA 编辑器的操作界面。

在 VBA 编辑器窗口中,右键 "VBAProject" ,依次点击 "插入" -> "模块",在插入的模块中编写 VBA 代码。

VBA代码在模块里面编写和运行。

如下为编写的VBA代码,代码相对比较长,有一定的学习门槛和难度,如果看不明白的话,可以直接复制粘贴使用。

Sub 批量生成工资条()
    Dim wsSource As Worksheet
    Dim wsTarget As Worksheet
    Dim lastRow As Long
    Dim currentRow As Long
    Dim i As Long
    Dim j As Integer
    Dim titleArray As Variant

    ' 定义原数据所在的工作表
    Set wsSource = ThisWorkbook.Sheets(1) ' 假设工资数据在第1个Sheet中

    ' 获取源数据的最后一行
    lastRow = wsSource.Cells(wsSource.Rows.Count, 1).End(xlUp).Row

    ' 删除之前生成的工资条表(如果存在)
    On Error Resume Next
    Application.DisplayAlerts = False
    Set wsTarget = ThisWorkbook.Sheets("批量生成工资条")
    If Not wsTarget Is Nothing Then
        wsTarget.Delete
    End If
    Application.DisplayAlerts = True
    On Error GoTo 0

    ' 新建一个Sheet用于存储批量生成的工资条
    Set wsTarget = ThisWorkbook.Sheets.Add
    wsTarget.Name = "批量生成工资条"

    ' 定义标题数组
    titleArray = Array("姓名", "性别", "学历", "基本工资", "业绩", "提成点")

    ' 初始化工资条生成起始行
    currentRow = 1

    ' 遍历每一行员工数据
    For i = 2 To lastRow
        ' 输出标题
        For j = 0 To UBound(titleArray)
            wsTarget.Cells(currentRow, j + 1).Value = titleArray(j)
            ' 设置标题行格式
            With wsTarget.Cells(currentRow, j + 1)
                .Font.Bold = True
                .Font.Name = "微软雅黑"
                .Interior.Color = RGB(192, 192, 192) ' 设置背景为灰色
            End With
        Next j

        ' 输出每个员工的工资数据
        For j = 1 To 6 ' 假设源数据有6列
            wsTarget.Cells(currentRow + 1, j).Value = wsSource.Cells(i, j).Value
            ' 设置数据行格式
            With wsTarget.Cells(currentRow + 1, j)
                .Font.Bold = True
                .Font.Name = "微软雅黑"
            End With
        Next j

        ' 每个工资条占两行,移动到下一个工资条的起始行
        currentRow = currentRow + 3
    Next i

    MsgBox "工资条批量生成完成!", vbInformation
End Sub

3.VBA运行

将VBA代码复制粘贴到到 VBA 编辑器中,点击 "运行" 按钮,或按下 F5 键运行该脚本。

这里将拆分后的工资条新建了一个名为“批量生成工资条”的sheet表来保存,生成工资条后就可以打印下发。

4.保存VBA

为了将编写的VBA可以永久保存,可以将工作簿保存为 *.xlsm 格式,点击"文件"选项,在保存类型中选择"Excel启用宏的工作簿",即可保存宏。

如果有新员工添加进来,只要在行末尾继续追加数据,然后,在VBA编辑器界面点击运行,即可一键批量生成工资条。

通过这节课的学习,我们成功使用 Excel VBA 实现了批量生成工资条的功能,这个自动化过程不仅减少了手动操作的繁琐,还极大提升了工作效率,同时,还能更好地理解和应用Excel VBA 知识,帮助我们提高工作效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2142732.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

swagger新玩法 - 让你API接口开发原地起飞

作为Java后台接口开发人员,无论对对接方是前端还是第三方,很多时候我们在文档和代码两头都需要费心,而做到自动的同步将会非常省心。本教程将带你领略下如何借助swagger官方提供的新玩法,让你的API接口开发原地起飞,甚…

34.贪心算法1

0.贪心算法 1.柠檬水找零(easy) . - 力扣(LeetCode) 题目解析 算法原理 代码 class Solution {public boolean lemonadeChange(int[] bills) {int five 0, ten 0;for (int x : bills) {if (x 5) // 5 元:直接收下…

4. Python之运算符

一. Python运算符 常用的运算符有:算述运算符,赋值运算符,比较运算述,逻辑运算符,位运算符等等。 1. 算述运算符 用于处理四则运算的符号,主要有: 运算符描述加法-减法*乘法/除法//整除%取余…

嵌入式DCMI摄像头功能调试方法

STM32F407芯片带有DCMI接口,在我们的核心板上已经将接口用18PIN的FPC座子引出。 这个接口可以接我们的OV2640接口。 本节我们开始调试摄像头。 16.1. DCMI DCMI接口是ST自己定义的接口。 Digital camera interface (DCMI),是意法半导体公司产品STM32F4xx系列芯片的快速摄像头…

【JavaEE初阶】多线程(5 单例模式 \ 阻塞队列)

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 实例1: 单例模式 饿汉模式 懒汉模式 实例2:阻塞队列 生产者消费者模型 优点 ​编辑 代价 简单实现一个生产者消费者模型 Java标准库中的阻塞队列 ​编辑 模拟实现一…

面试官问:你如何看待加班?

面试官问:你如何看待加班? 面试官问:你如何看待加班?这类问题是比较常见的,出现频率相当高。有些同学看到这样的问题,就会断定这家公司估计是经常加班的,绝对的不能去!!…

通信工程学习:什么是PON无缘光纤网络

PON:无源光纤网络 PON(Passive Optical Network,无源光纤网络)是一种采用光分路器等无源光器件进行信号传输和分配的光纤接入技术。它利用光纤作为传输媒介,通过无源设备将光信号从中心局(如光线路终端OLT&…

中秋节特别游戏:给玉兔投喂月饼

🖼️ 效果展示 📜 游戏背景 在中秋这个充满诗意的节日里,玉兔因为贪玩被赶下人间。在这个温柔的夜晚,我们希望通过一个小游戏,让玉兔感受到人间的温暖和关怀。🐰🌙 🎮 游戏设计 人…

太阳能光伏板航拍红外图像缺陷分类数据集

太阳能光伏板航拍红外图像缺陷分类数据集 一、数据集简介 太阳能光伏板的性能直接影响到光伏发电系统的效率和可靠性。随着无人机和红外成像技术的发展,通过航拍红外图像对光伏板进行缺陷检测已成为一种高效且准确的方法。本数据集包含11种不同的缺陷分类&#xf…

【CPP】模板(后篇)

目录 13.1 非类型模板参数13.2 函数模板的特化13.3 类模板的特化13.4 模板的分离编译 这里是oldking呐呐,感谢阅读口牙!先赞后看,养成习惯! 个人主页:oldking呐呐 专栏主页:深入CPP语法口牙 13.1 非类型模板参数 顾名思义,非类型模板参数就是一个模板的参数,只不过不是类型,而…

第二十六篇——九地篇:九种形势的应对之道

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 地势的维度重新阐述了懂得人心的重要性,道久其归一为为别人。…

个人随想-gpt-o1大模型中推理链的一个落地实现

​首先祝大家中秋节快乐。 最近openai又推出了新的模型openai o1​还有它的mini版。官网的介绍,就是它的推理能力很强,比gpt-4o​有很大的提升。 最近也跟同行在聊这个o1,​看看落地方面有哪些可行性。在我们自己的实验上,把o1用…

Python画笔案例-052 绘制彩色递归六边形

1、绘制彩色递归六边形 通过 python 的turtle 库绘制 彩色递归六边形,如下图: 2、实现代码 绘制彩色递归六边形,以下为实现代码: """彩色递归六边形.py """ import turtledef draw_circle(radius,…

【自动化测试】移动app的分层测试以及自动遍历的基本概念

引言 移动应用的分层测试是一种系统化的测试方法,它将测试过程分解为不同的层次,以确保应用在每个层面上都符合设计要求和用户期望 文章目录 引言一、移动app的分层测试1.1 单元测试(Unit Testing)1.2 集成测试(Integr…

甲骨文创始人埃里森:人工智能终有一天会追踪你的一举一动

9月17日消息,据外电报道,甲骨文创始人拉里埃里森在甲骨文财务分析师会议上表示,他预计人工智能有一天将为大规模执法监控网络提供动力。“我们将进行监督。”他说。“每一位警察都将随时受到监督,如果有问题,人工智能会…

人工智能辅助汽车造型设计

随着科技的不断进步,人工智能(AI)在各个领域的应用越来越广泛,汽车设计行业也不例外。尤其在车辆外观造型设计中,AI正在成为设计师的重要助手,通过提供强大的工具和独特的创意方式,革新了传统设…

算法之搜索--最长公共子序列LCS

最长公共子序列&#xff08;longest common sequence&#xff09;:可以不连续 最长公共子串&#xff08;longest common substring&#xff09;&#xff1a;连续 demo for (int i 1;i<lena;i){for (int j 1;j<lenb;j){if(a[i-1]b[j-1]){dp[i][j]dp[i-1][j-1]1;}el…

神奇的Serializable接口,为什么有时候网络传输不用实现Serializable,有时候又需要?

大家好&#xff0c;这里是小奏,觉得文章不错可以关注公众号小奏技术 背景 其他大家在初学java的时候肯定是接触过Serializable接口的&#xff0c;这个接口是一个标记接口&#xff0c;没有任何方法&#xff0c;只是一个标记&#xff0c;用来标记一个类可以被序列化&#xff0c;…

深入解析代理模式:静态代理、JDK 动态代理和 CGLIB 的全方位对比!

代理模式&#xff08;Proxy Pattern&#xff09;是一种结构型设计模式&#xff0c;它提供了对象的替身&#xff0c;即代理对象来控制对实际对象的访问。通过代理对象&#xff0c;可以在不修改目标对象的情况下&#xff0c;扩展或控制其功能。例如&#xff0c;代理模式可以用于延…

JDBC的介绍和连接MySQL数据库

目录 1. 为什么学习JDBC 1.1 数据存储​编辑​编辑 1.2 数据操作​编辑 2. JDBC概述 2.1 JDBC概念 2.2 JDBC 核心组成 3. 实现 JDBC 3.1 JDBC 搭建步骤 3.2 详细演示 3.3 核心API 3.3.1 Driver​ 3.3.2 Connection​ 3.3.3 Statament​ 3.3.4 PreparedStatement …