excel根据数据批量创建并重命名工作表
需求
根据一列数据,批量创建并重命名工作表

做法
1. 右键该sheet,选择查看代码

2. 输入VBA代码
正向创建
Sub create_sheets_by_col()Dim num%' 定义为integer*num = Application.WorksheetFunction.CountA(Sheet1.Range("A:A"))' num是非空单元格数For i = 1 To numSheets.Add after:=ActiveSheetSheets(i + 1).SelectSheets(i + 1).Name = Sheet1.Cells(i, 1)Next i
End Sub

解释
Sub create_sheets_by_col()
Sub关键字用于声明一个子程序或宏。create_sheets_by_col是子程序的名字,这个名字表明了宏的目的,即通过某一列的数据来创建新的工作表。
Dim num%
Dim关键字用于声明一个变量。num%声明了一个名为num的整型变量(Integer)。在VBA中,变量类型是通过在变量名后面加上一个类型声明字符来指定的,%表示整型。
num = Application.WorksheetFunction.CountA(Sheet1.Range("A:A"))
- 这行代码使用Excel的
WorksheetFunction对象的CountA方法来计算Sheet1工作表中A列的非空单元格数量。Application.WorksheetFunction是访问Excel工作表函数的方式,CountA函数计算指定范围内的非空单元格数。Sheet1.Range("A:A")指定了Sheet1工作表的A列。
For i = 1 To num
- 这行代码开始了一个
For循环。循环变量i从1开始,一直增加到num的值。循环将重复执行下面的代码块,每次循环i的值都会增加1。
Sheets.Add after:=ActiveSheet
- 在循环体内,
Sheets.Add after:=ActiveSheet是一个方法调用,它会在当前活动的工作表之后添加一个新的工作表。ActiveSheet是一个内置属性,代表当前选中的工作表。
Sheets(i + 1).Select
Sheets(i + 1).Select选择并激活新添加的工作表。因为新工作表是在当前活动工作表之后添加的,所以它的索引位置是i + 1。
Sheets(i + 1).Name = Sheet1.Cells(i, 1)
- 这行代码将新工作表的名称设置为
Sheet1工作表中第i行第1列的单元格内容。这意味着每个新创建的工作表将以其对应的A列单元格内容命名。
Next i
Next i语句标志着For循环的结束。每次循环结束时,i的值都会增加1,直到它等于num,此时循环停止。
End Sub
End Sub语句表示子程序的结束。这是宏定义的最后一行代码,它告诉VBA宏编辑器子程序的代码到此结束。
总体来说,这段代码的目的是遍历 Sheet1 工作表的A列,对于每个非空单元格,都会创建一个新的工作表,并将新工作表的名称设置为该单元格的值。这样,如果A列有5个非空单元格,那么就会创建5个新工作表,每个工作表的名称对应于A列中相应行的单元格内容。
效果

反向创建
Sub create_sheets_by_col_rev()Dim num%num = Application.WorksheetFunction.CountA(Sheet1.Range("A:A"))For i = 1 To numSheets.AddSheets(1).Name = Sheet1.Cells(i, 1)' Sheet1=Sheets(i+1), sheet1随着新工作表的建立被往后挤,序列数随之增大Next i
End Sub

解释
Sub create_sheets_by_col_rev()
Sub关键字用于声明一个子程序或宏。create_sheets_by_col_rev是子程序的名字,这个名字表明了宏的目的是通过某一列的数据来创建新的工作表,并且可能有一些修改或优化(由“rev”后缀暗示)。
Dim num%
Dim关键字用于声明一个变量。num%声明了一个名为num的整型变量(Integer)。
num = Application.WorksheetFunction.CountA(Sheet1.Range("A:A"))
- 这行代码使用Excel的
WorksheetFunction对象的CountA方法来计算Sheet1工作表中A列的非空单元格数量。Application.WorksheetFunction是访问Excel工作表函数的方式,CountA函数计算指定范围内的非空单元格数。Sheet1.Range("A:A")指定了Sheet1工作表的A列。
For i = 1 To num
- 这行代码开始了一个
For循环。循环变量i从1开始,一直增加到num的值。循环将重复执行下面的代码块,每次循环i的值都会增加1。
Sheets.Add
- 在循环体内,
Sheets.Add是一个方法调用,它会在工作簿的末尾添加一个新的工作表。
Sheets(1).Name = Sheet1.Cells(i, 1)
- 这行代码将新添加的工作表(现在是工作簿中的第一个工作表,索引为1)的名称设置为
Sheet1工作表中第i行第1列的单元格内容。这意味着每个新创建的工作表将以其对应的A列单元格内容命名。
Next i
Next i语句标志着For循环的结束。每次循环结束时,i的值都会增加1,直到它等于num,此时循环停止。
End Sub
End Sub语句表示子程序的结束。这是宏定义的最后一行代码,它告诉VBA宏编辑器子程序的代码到此结束。
总体来说,这段代码的目的是遍历 Sheet1 工作表的A列,对于每个非空单元格,都会在工作簿的末尾创建一个新的工作表,并将新工作表的名称设置为该单元格的值。每次添加新工作表后,原有的工作表索引位置都会增加,因此新工作表始终是工作簿中的第一个工作表,其索引为1。
效果

相关文章:
excel根据数据批量创建并重命名工作表
需求 根据一列数据,批量创建并重命名工作表 做法 1. 右键该sheet,选择查看代码 2. 输入VBA代码 正向创建 Sub create_sheets_by_col()Dim num% 定义为integer*num Application.WorksheetFunction.CountA(Sheet1.Range("A:A")) num是非空…...
智能合约和分布式应用管理系统:技术革新与未来展望
引言 随着区块链技术的不断发展,智能合约和分布式应用(DApps)逐渐成为数字经济中的重要组成部分。智能合约是一种自执行的协议,能够在预设条件满足时自动执行代码,而无需人工干预或中介机构。这种自动化和信任机制极大…...
Spring MVC 中的拦截器的使用“拦截器基本配置” 和 “拦截器高级配置”
1. Spring MVC 中的拦截器的使用“拦截器基本配置” 和 “拦截器高级配置” 文章目录 1. Spring MVC 中的拦截器的使用“拦截器基本配置” 和 “拦截器高级配置”2. 拦截器3. Spring MVC 中的拦截器的创建和基本配置3.1 定义拦截3.2 拦截器基本配置3.3 拦截器的高级配置 4. Spr…...
MyBatis框架学习笔记(四):动态SQL语句、映射关系和缓存
1 动态 SQL 语句-更复杂的查询业务需求 1.1 动态 SQL-官方文档 (1)文档地址: mybatis – MyBatis 3 | 动态 SQL (2)为什么需要动态 SQL 动态 SQL 是 MyBatis 的强大特性之一 使用 JDBC 或其它类似的框架,根据不同条…...
【C++PythonJava】字符处理详细解读_字符_ASCLL码_字母数字转换_算法竞赛_开发语言
文章目录 Beginning1)ASCLL 码2)大小比较2)判断数字字符3)字符、数字间的相互转换End Beginning 在 C 中,字符和整数有着密不可分的关系。原因就是在计算机中,字符是以一种较 ASCLL 码的整数存储的。自然&…...
人像视频淡入淡出效果的灵敏检验方法
在视频中经常会有淡入淡出的效果,这可能导致人脸检测在实际人已经离开画面之后仍然触发,特别是在使用基于像素强度变化的检测算法时。为了更精确地裁剪视频,你可以尝试以下几种方法: 使用更复杂的人脸检测模型: 有些…...
Unity UGUI Image Maskable
在Unity的UGUI系统中,Maskable属性用于控制UI元素是否受到父级遮罩组件的影响。以下是关于这个属性的详细说明和如何使用: Maskable属性 Maskable属性: 当你在GameObject上添加一个Image组件(比如UI面板或按钮)时&…...
SpringCloud | 单体商城项目拆分(微服务)
为什么要进行微服务拆分? 在平常的商城项目中,我们一般的项目结构模块都是将各种业务放在同一个项目文件夹,比如像: 用户,购物车,商品,订单,支付等业务都是放在一起,这样…...
uniapp 如何实现路由拦截,路由守卫
uniapp框架的全局文件:page.json全局文件,官网链接 背景: 通过封装 UniApp 的路由方法,并在封装方法中添加自定义逻辑,可以实现类似 Vue Router 的路由守卫功能。 在 UniApp 框架中,不像 Vue Router 直接支…...
人工智能算法工程师(中级)课程13-神经网络的优化与设计之梯度问题及优化与代码详解
大家好,我是微学AI,今天给大家介绍一下人工智能算法工程师(中级)课程13-神经网络的优化与设计之梯度问题及优化与代码详解。 文章目录 一、引言二、梯度问题1. 梯度爆炸梯度爆炸的概念梯度爆炸的原因梯度爆炸的解决方案 2. 梯度消失梯度消失的概念梯度…...
Qt/QML学习-ComboBox
QML学习 ComboBox例程视频讲解代码 main.qml import QtQuick 2.15 import QtQuick.Window 2.15 import QtQuick.Controls 2.15Window {width: 640height: 480visible: truetitle: qsTr("ComboBox")ComboBox {id: comboBox// 列表项数据模型model: ListModel {List…...
微服务实战系列之玩转Docker(一)
前言 话说计算机的“小型化”发展,历经了大型机、中型机直至微型机,贯穿了整个20世纪的下半叶。同样,伴随着计算机的各个发展阶段,如何做到“资源共享、资源节约”,也一直是一代又一代计算机人的不懈追求和历史使命。今…...
Java中常见的语法糖
文章目录 概览泛型增强for循环自动装箱与拆箱字符串拼接枚举类型可变参数内部类try-with-resourcesLambda表达式 概览 语法糖是指编程语言中的一种语法结构,它们并不提供新的功能,而是为了让代码更易读、更易写而设计的。语法糖使得某些常见的编程模式或…...
数据库使用SSL加密连接
简介 数据库开通SSL加密连接是确保数据传输过程中安全性的关键措施,它通过加密数据、验证服务器身份、保护敏感信息、维护数据完整性和可靠性,同时满足行业标准和法规要求,进而提升用户体验和信任度,为企业的数据安全和业务连续性…...
华为OD算法题汇总
60、计算网络信号 题目 网络信号经过传递会逐层衰减,且遇到阻隔物无法直接穿透,在此情况下需要计算某个位置的网络信号值。注意:网络信号可以绕过阻隔物 array[m][n],二维数组代表网格地图 array[i][j]0,代表i行j列是空旷位置 a…...
服务器的rabbitmq的guest账号登不进去
要配置 RabbitMQ 允许 guest 账号从非 localhost 地址登录,需要执行以下步骤: 编辑 RabbitMQ 配置文件: 打开 RabbitMQ 的配置文件,通常位于 /etc/rabbitmq/rabbitmq.conf 或者 /etc/rabbitmq/rabbitmq-env.conf。如果这些文件不存…...
决策树(ID3,C4.5,C5.0,CART算法)以及条件推理决策树R语言实现
### 10.2.1 ID3算法基本原理 ### mtcars2 <- within(mtcars[,c(cyl,vs,am,gear)], {am <- factor(am, labels c("automatic", "manual"))vs <- factor(vs, labels c("V", "S"))cyl <- ordered(cyl)gear <- ordered…...
文心一言《使用手册》,文心一言怎么用?
一、认识文心一言 (一)什么是文心一言 文心一言是百度研发的 人工智能大语言模型产品,能够通过上一句话,预测生成下一段话。 任何人都可以通过输入【指令】和文心一言进行对话互动、提出问题或要求,让文心一言高效地…...
Spring Boot集成qwen:0.5b实现对话功能
1.什么是qwen:0.5b? 模型介绍: Qwen1.5是阿里云推出的一系列大型语言模型。 Qwen是阿里云推出的一系列基于Transformer的大型语言模型,在大量数据(包括网页文本、书籍、代码等)进行了预训练。 硬件要求:…...
GreenDao实现原理
GreenDao 是一款针对 Android 平台优化的轻量级对象关系映射 (ORM) 框架,它将 Java 对象映射到 SQLite 数据库,以简化数据持久化操作。GreenDao 的主要优点包括高性能、低内存占用、易于使用以及对数据库加密的支持。 以下是基于源码的 GreenDao 实现原…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...
