提示:程序代码是根据实际工作的需求编写的,仅供参考学习使用。
文章目录
一、问题描述
Excel VBA一键批量生成对账单
前不久,由于内人工作上的需要,开始接触并研究起Excel VBA的使用。
从EPR系统里导出的客户数据,一张表格里有几十家甚至上百家业务往来单位,要按照对应的单位名称生成单独的一张对账单表格。如果按照常规的复制粘贴来处理,一家单位处理下来少说也得五六分钟。不仅工作效率低,而且很浪费时间,严重影响其他工作的开展。
在网上搜索方法教程,无意中看到可以通过Excel VBA来批量生成对账单,只要把代码编写好,只需要一键便可以轻松完成几个小时的工作量。
从零接触到零基础,边解读代码边学习基础知识,渐渐熟悉每一行代码的含义和可以实现的功能,然后再根据实际工作去调试原视频的代码,并自行编写满足工作需求的代码,经过无数次的调试失败,修改代码,最终实现了通过VBA一键批量生成对账单。
对账单及模板表格
最终实现的效果
二、代码程序
操作软件:Microsoft Office Excel 2021
使用功能:Visual Basic
Sub 一键生成对账单()
'屏幕刷新(ScreenUpdating),作用是使Excel停止刷新,提高代码的执行速度。
Application.ScreenUpdating = False
'屏蔽弹窗提示
Application.DisplayAlerts = False
'dqsh当前工作表 fzmb复制模板 mb模板 sxrg筛选
Dim dqsh As Worksheet, fzmb As Worksheet, mb As Worksheet, sxrg As Range
Dim wb As Workbook, y%, r%, x%, k%, i%, d '申明wb为工作簿对象 %短整型 d字典对象
Dim arr, arr1 '作为存储区域的数组
t = Timer '记录代码运行的起始时间
Set d = CreateObject("scripting.dictionary") '创建字典对象
Set dqsh = ThisWorkbook.ActiveSheet '把当前工作簿的活动工作表交给dqsh
Set mb = Sheets("模板") '把模板这张工作表赋值给mb
dqsh.AutoFilterMode = False '取消筛选,防止后面定位产生偏差
r = dqsh.Range("L65536").