当前位置: 首页 > news >正文

Excel宏(VBA)自动化标准流程代码

自动化流程

我们对一个报表进行自动化改造会经历的固定流程,这里称为“流水线”,通常包含以下流程:

  • 打开一个表格
  • 选择打开的表格
  • 选择表格中的Sheet
  • 选择Sheet中的单元格区域 (有时候需要按条件筛选)
  • 复制某个区域 粘贴在某个区域
    (有时候需要刷新某个透视表)
    完成后保存
    最后一步关闭表格
    在这里插入图片描述

以下是一段包含了上述过程的脚本

基础复制粘贴和填充公式

'基础复制粘贴和填充公式
Dim wb1 As Workbook, wb2 As Workbook
Dim ws1 As Worksheet, ws2 As Worksheet, pt As PivotTable
Dim lastRow As Long
Set wb1 = Workbooks.Open("表格21.xlsx")
Set ws1 = wb1.Sheets("Sheet1")
Set pt = ws1.PivotTables("数据透视表3")
pt.PivotCache.Refresh'获取需要复制区域的最后一行行号
lastRow = ws1.Range("A" & ws1.Rows.Count).End(xlUp).Row
ws1.Range("A6:D" & lastRow).CopySet wb2 = Workbooks.Open("表格44.xlsx")
Set ws2 = wb2.Sheets("H433区")'获取准备粘贴区域的第一个为空行的行号(粘贴起始位置)
lastRow = ws2.Range("A" & ws2.Rows.Count).End(xlUp).Row + 1'粘贴
ws2.Range("A" & lastRow).PasteSpecial xlPasteValues'获取粘贴后的区域的最后一行行号
lastRow = ws2.Range("A" & ws2.Rows.Count).End(xlUp).Row 
‘将F:H列的公式填充导最后一行
With ws2.Range("F2:H2")
.AutoFill Destination:=ws2.Range("E2:H" & lastRow)
End Withwb1.Save
wb1.Close
wb2.Save
wb2.Close

数据筛选

'数据筛选
Dim ws As Worksheet
Dim lastRow As Long
Dim filterRange As Range
Dim filteredData As Range
Dim n As LongSet ws = ThisWorkbook.Worksheets("Sheet1")lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Set filterRange = ws.Range("A1:AF" & lastRow)'筛选数据范围
With filterRange.AutoFilter Field:=7, Criteria1:=">=" & DMin, Operator:=xlAnd, Criteria2:="<=" & DMaxSet filteredData = .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).SpecialCells(xlCellTypeVisible)
End WithIf Not filteredData Is Nothing Then'将筛选后的数据复制到Sheet3的A2单元格开始的区域Set ws = ThisWorkbook.Worksheets("Sheet3")ws.Range("A2").Resize(filteredData.Rows.Count, filteredData.Columns.Count).Value = filteredData.Valuews.Range("A" & lastRow + 1 & ":AF" & ws.Rows.Count).ClearContents
End If'以下这种写法在功能上是等效的,即将filteredData复制到A2单元格开始的位置。
'但是,它使用了Select和Activate语句,这是不推荐的。
'使用Select和Activate语句会使代码变得缓慢且容易出错.
'应该直接将filteredData的值赋给目标区域(Value)‘filteredData.Copy 
’Range("A2").Select
‘Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _’   :=False, Transpose:=False'清除筛选
filterRange.AutoFilter'释放对象内存
Set ws = Nothing
Set filterRange = Nothing
Set filteredData = Nothing

筛选删除


Dim ws As Worksheet
Dim lastRow As Long
Dim filterRange As Range
Dim filteredData As Range
Dim n As LongSet ws = ThisWorkbook.Worksheets("Sheet1")lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Set filterRange = ws.Range("A1:AF" & lastRow)'筛选数据范围赋值filteredData
'使用Offset方法将filterRange对象向下偏移1行,以排除标题行。
'然后使用Resize方法调整数据区域的大小,使其与filterRange对象的行数相同,但不包括标题行。
'使用SpecialCells方法和xlCellTypeVisible参数,获取可见单元格范围,即筛选后的数据区域。
With filterRange
.AutoFilter Field:=7, Criteria1:=">=" & DMin, Operator:=xlAnd, Criteria2:="<=" & DMax
Set filteredData = .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).SpecialCells(xlCellTypeVisible)
End WithIf Not filteredData Is Nothing Then
'删除不符合条件的行
filteredData.EntireRow.Delete
End If
'取消筛选
filterRange.AutoFilter

相关文章:

Excel宏(VBA)自动化标准流程代码

自动化流程 我们对一个报表进行自动化改造会经历的固定流程&#xff0c;这里称为“流水线”&#xff0c;通常包含以下流程&#xff1a; 打开一个表格选择打开的表格选择表格中的Sheet选择Sheet中的单元格区域 &#xff08;有时候需要按条件筛选&#xff09;复制某个区域 粘贴…...

vue vue3开发 vue2和vue3的选择

现在vue新建项目&#xff0c;官方给出的命令是 npm create vuelatest项目默认vue3&#xff0c;他是不支持IE11 如果想支持IE11用下面方法&#xff0c;项目vue2.7.7 npm create vuelegacy他们的打包工具默认vite&#xff0c;不是webpack。老手要注意生成的项目中的示例组件使…...

华为OD 数列描述(100分)【java】A卷+B卷

华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应往年部分考题以及新出的题目。 我将持续更新最新题目 我精选了一部分题目免费分享给大家,可前往夸克网盘转存,请点击以下链接进入: 我用夸克网盘分享了「华为OD题库J…...

μCOS-Ⅲ中断管理,这样理解非常简单!

μCOS-Ⅲ中断管理&#xff0c;这样理解非常简单&#xff01; 文章目录 μCOS-Ⅲ中断管理&#xff0c;这样理解非常简单&#xff01;前言一、中断源与中断优先级二、μCOS-Ⅲ的中断管理方式三、中断屏蔽与中断控制1、μCOS-Ⅲ中断开关2、μCOS-Ⅲ中断屏蔽应用——临界区4、μCOS…...

Vue 项目进行 SEO 优化

SSR 服务器渲染 服务端渲染, 在服务端 html 页面节点, 已经解析创建完了, 浏览器直接拿到的是解析完成的页面解构 关于服务器渲染&#xff1a;Vue 官网介绍 &#xff0c;对 Vue 版本有要求&#xff0c;对服务器也有一定要求&#xff0c;需要支持 nodejs 环境。 优势: 更好的 …...

【C++入门篇】保姆级教程篇【上】

目录 一、第一个C程序 二、C命名空间 1&#xff09;什么是命名空间&#xff1f; 2&#xff09;命名空间的使用 3&#xff09; std库与namespace展开 4&#xff09;命名空间的嵌套使用 三、输入输出方式 四、缺省参数 1&#xff09;什么是缺省参数&#xff1f; 2&#xff0…...

用傲梅分区软件分割分区重启系统蓝屏BAD_SYSTEM_CONFIG_INFO,八个解决参考方案

环境: Win11 专业版 HP 笔记本 傲梅分区软件 闪迪16G U盘 Win10 官方镜像文件 Win11PE 系统安装U盘 USB固态硬盘盒 问题描述: 起因 开始使用windows自动磁盘管理工具压缩不了磁盘,提示无法将卷压缩到超出任何不可移动的文件所在点,关闭系统保护还原,删除系统创建…...

7-1、S曲线加减速原理【51单片机控制步进电机-TB6600系列】

摘要&#xff1a;本节介绍步进电机S曲线相关内容&#xff0c;总共分四个小节讨论步进电机S曲线相关内容   根据上节内容&#xff0c;步进电机每一段的速度可以任意设置&#xff0c;但是每一段的速度都会跳变&#xff0c;当这个跳变值比较大的时候&#xff0c;电机会发生明显的…...

golang 通過ssh連接遠程服務器 控制

1.下載依賴 go get golang.org/x/crypto/ssh 2.import import ("fmt""log""time""golang.org/x/crypto/ssh" )3.使用 func pwdConnect(sshHost, sshUser, sshPassword string, sshPort int) (*ssh.Client, error) {// 创建ssh登录…...

Python深度学习实战-基于tensorflow.keras六步法搭建神经网络(附源码和实现效果)

实现功能 第一步&#xff1a;import tensorflow as tf&#xff1a;导入模块 第二步&#xff1a;制定输入网络的训练集和测试集 第三步&#xff1a;tf.keras.models.Sequential()&#xff1a;搭建网络结构 第四步&#xff1a;model.compile()&#xff1a;配置训练方法 第五…...

单片机核心/RTOS必备 (ARM汇编)

ARM汇编概述 一开始&#xff0c;ARM公司发布两类指令集&#xff1a; ARM指令集&#xff0c;这是32位的&#xff0c;每条指令占据32位&#xff0c;高效&#xff0c;但是太占空间。Thumb指令集&#xff0c;这是16位的&#xff0c;每条指令占据16位&#xff0c;节省空间。 要节…...

2023/10/25

如果你越来越冷漠 你以为你成长了 但其实没有 长大应该是变得温柔 对全世界都温柔...

如何做一个无符号数识别程序

1.状态分析 我们可以把无符号数分为&#xff1a;整数&#xff0c;带小数&#xff0c;带指数部分三种形式。以此构建一个DFA。首先需识别输入是整数还是小数点&#xff0c;若是整数部分输入然后还要再循环识别一次是否有小数点&#xff0c;最后识别是否有指数部分&#xff0c;指…...

C++初阶:C/C++内存管理

一.C/C内存分布 先来回顾一下C语言内存分区示意图如下&#xff1a; 代码区&#xff1a; 程序执行代码一般存放在代码区&#xff0c;字符串常量以及define定义的常量也可能存放在代码区。 常量区&#xff1a; 字符串&#xff0c;数字等常量以及const修饰的全局变量往往存放在…...

新成果展示:AlGaN/GaN基紫外光电晶体管的设计与制备

紫外光电探测器被广泛应用于导弹预警、火灾探测、非可见光通信、环境监测等民事和军事领域&#xff0c;这些应用场景的实现需要器件具有高信噪比和高灵敏度。因此&#xff0c;光电探测器需要具备响应度高、响应速度快和暗电流低的特性。近期&#xff0c;天津赛米卡尔科技有限公…...

Ivs+keepalived:高可用集群

Ivskeepalived:高可用集群 keepalived为lvs应运而生的高可用服务。lvs的调度器无法做高可用&#xff0c;keepalived这个软件就是为了实现调度器的高可用。 注意&#xff1a;keepalived不是专门为lvs集群服务的&#xff0c;也可以做其他代理服务器的高可用。 lvs的高可用集群&a…...

win10安装spark

一、进入spark下载页面 连接 Downloads | Apache Spark 二、解压下载后的.tgz文件 直接解压即可 三、运行 运行bin目录下的 spark-shell.cmd 提示 Did not find winutils.exe: java.io.FileNotFoundException: java.io.FileNotFoundException: HADOOP_HOME and hadoop.hom…...

基于Spring Boot 的毕业生实习就业管理系统(绿色)

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于Spring Boot 的毕业生实习就业管理系…...

1600*C. Remove Adjacent(贪心字符串)

Problem - 1321C - Codeforces 解析&#xff1a; 贪心&#xff0c;从z到a遍历&#xff0c;每次循环减去符合题意的字符。 #include<bits/stdc.h> using namespace std; signed main(){int n;string s;cin>>n>>s;for(char iz;i>a;i--){for(int j0;j<s.…...

CRC校验码2018-架构师(六十一)

以下关于串行总线的说法中&#xff0c;正确的是&#xff08;&#xff09;。 串行总线一般都是双全工总线&#xff0c;适宜于长距离传输数据串行总线传输的波特率是总线初始化时预先定义好的&#xff0c;使用中不可改变串行总线是按位&#xff08;BIT&#xff09;传输数据的&am…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...