Excel中根据某列内容拆分为工作簿

简介:根据A列的内容进行筛选,将筛选出来的数据生成一个新的工作簿(可以放到指定文件夹下),且工作簿名为筛选内容。

举例:

将上面的内容使用VBA会在当前test1下生成5个工作簿,工作簿名分别为TEST1.xls TEST2.xls TEST3.xls TEST4.xls TEST5.xls。且里面的内容也为筛选出来的内容:

如TEST1.xls内容为:

代码

Sub 根据A列单元格拆分为多个工作簿()Dim ws As WorksheetDim filterRange As Range, dataRange As RangeDim folderPath As StringDim newWorkbook As WorkbookDim filteredData As RangeDim filterValue As StringDim lastRow As LongDim i As LongDim count As Long ' 计数器,用来记录成功导出的工作簿数Dim folderName As String' 获取当前工作表Set ws = ThisWorkbook.ActiveSheet' 获取A列的最后一行lastRow = ws.Cells(ws.Rows.count, "A").End(xlUp).Row' 定义数据范围Set dataRange = ws.Range("A1").CurrentRegion ' 包含所有数据(标题行和数据行)'导出来的文件放在test1文件夹下面' 获取当前工作簿目录,并设置保存目录为 "test1" 文件夹folderPath = ThisWorkbook.Path & "\"folderName = "test1" ' 目标文件夹名If Dir(folderPath & folderName, vbDirectory) = "" Then' 如果 "test1" 文件夹不存在,则创建它MkDir folderPath & folderNameEnd If' 更新文件夹路径folderPath = folderPath & folderName & "\"' 清除之前的筛选(如果有)ws.AutoFilterMode = False' 初始化计数器count = 0' 遍历A列的每个非空单元格For i = 2 To lastRow ' 从A2开始filterValue = ws.Cells(i, 1).Value' 如果A列单元格为空,则跳出循环If filterValue = "" Then Exit For' 对A列应用筛选dataRange.AutoFilter Field:=1, Criteria1:=filterValue' 获取筛选后的可见数据On Error Resume NextSet filteredData = ws.AutoFilter.Range.SpecialCells(xlCellTypeVisible)On Error GoTo 0' 如果筛选结果存在,进行复制If Not filteredData Is Nothing Then' 创建新工作簿Set newWorkbook = Application.Workbooks.AddApplication.DisplayAlerts = FalsenewWorkbook.Sheets(1).Name = "Sheet1"' 复制筛选后的内容(包括标题行)filteredData.Copy Destination:=newWorkbook.Sheets(1).Range("A1")' 保存工作簿,并以当前筛选值命名,保存到 "test1" 文件夹newWorkbook.SaveAs folderPath & filterValue & ".xlsx", FileFormat:=xlOpenXMLWorkbooknewWorkbook.Close SaveChanges:=FalseApplication.DisplayAlerts = True' 增加计数器count = count + 1End IfNext i' 清除筛选ws.AutoFilterMode = False' 显示操作完成提示If count > 0 ThenMsgBox "导出完成!共导出了 " & count & " 个工作簿。", vbInformationElseMsgBox "没有符合条件的数据!", vbExclamationEnd If
End Sub

注意:

使用VBA操作后是不可进行撤回的!!!

2.由于生成的工作簿的名字是根据筛选内容决定的,所以注意筛选的内容要符合文件的命名,否则会出错,如:筛选的内容是 \\ 这种特殊符号,给工作簿命名的时候会出错。

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

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

相关文章

【电子通识】“标准的标准”:国家标准GB/T 1.1-2020 标准的分类

标准是可以分类的。比如根据层次、专业、对象、目的、功能等维度进行分类。 以层次进行分类: 可以分为国际标准、区域标准、国家标准、团体标准、企业标准、行业标准 以专业进行分类: 可以分为农业、医药、卫生、劳动保护、矿业、化工、机械等等。 以对象…

【网络安全设备系列】12、态势感知

0x00 定义: 态势感知(Situation Awareness,SA)能够检测出超过20大类的云上安全风险,包括DDoS攻击、暴力破解、Web攻击、后门木马、僵尸主机、异常行为、漏洞攻击、命令与控制等。利用大数据分析技术,态势感…

数据库(MySQL黑马)

基础篇 MySQL概述 数据库概述 数据库相关概念 主流的关系型数据库管理系统 MySQL数据库的安装与启动 下载:MySQL :: MySQL Community Downloads 安装步骤 MySQL―8.0.40超详细保姆级安装教程_mysql8.0.40安装教程-CSDN博客文章浏览阅读1k次。_mysql8.0.40安装教…

深入解析音视频流媒体SIP协议交互过程

一、引言 在音视频流媒体传输过程中,SIP(Session Initiation Protocol)协议发挥着举足轻重的作用。本文将详细全面地介绍音视频流媒体传输中的SIP协议,包括其基本概念、交互过程、关键信令以及应用场景 二、SIP协议基本概念 1.…

Java算法OJ(11)双指针练习

目录 1.前言 2.正文 2.1存在重复数字 2.1.1题目 2.1.2解法一代码 解析: 2.1.3解法二代码 解析: 2.2存在重复数字plus 2.2.1题目 2.2.2代码 2.2.3解析 3.小结 1.前言 哈喽大家好吖,今天来给大家分享双指针算法的相关练习&…

IP划分(笔记)

IPv4 32位4字节 IPv6 128位16字节 IPv4转IPv6 前10字节全0,2字节全1,再加ipv4的4个字节 IPv4划分笔记(有类域): A类:首字节必为0b0xxxxxxx 0.0.0.0/8-127.255.255.255/8 实际范围:1.0.0.1/8-126.25…

【数据仓库 | Data Warehouse】数据仓库的四大特性

1. 前言 数据仓库是用于支持管理和决策的数据集合,它汇集了来自不同数据源的历史数据,以便进行多维度的分析和报告。数据仓库的四大特点是:主题性,集成性,稳定性,时变性。 2. 主题性(Subject-Oriented) …

Maven、JAVAWeb、Servlet

知识点目标 1、MavenMaven是什么Maven项目的目录结构Maven的Pom文件Maven的命令Maven依赖管理Maven仓库JavaWeb项目 2.网络基础知识 3、ServletMaven Maven是什么 Maven是Java的项目管理工具,可以构建,打包,部署项目,还可以管理…

python | 6 个在 cmd 中常用的 python 命令

本文涉及的 python 常见使用命令示例 均是在默认已经配置了 python 环境变量的情况下 如果安装 python 环境时没有配置环境变量,需要先进入到安装 python 的文件路径下,否则会提示命令不存在。其原理及配置方法可参考往期文章: 环境变量是…

CondaValueError: Malformed version string ‘~‘: invalid character(s).

问题描述:在window下使用conda安装任何包都会报错。报错信息是CondaValueError: Malformed version string ~: invalid character(s). 解决办法:把.condarc文件的源地址删除(八成是源地址访问不了了),只保存默认的&am…

Zookeeper3.5.8集群部署

环境说明 准备三台服务器,我这边是虚拟机,分别为:bigdata141、bigdata142、bigdata143 下载安装包 下载链接:Index of /dist/zookeeper/zookeeper-3.5.8 下载完后,上传到其中一台服务器,我这边上传到 b…

Unity开启外部EXE程序

Unity开启外部EXE using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Runtime.InteropServices; using System.Threading.Tasks; using UnityEditor; using UnityEngine;public class Unity_OpenExe : Mono…

Algorithms and Data Structures in C++ by Mohammed Yasir Eramangadan

MP4 创建 |视频:h264、1280720 |音频:AAC,44.1 KHz,2 通道 类型:在线学习 |语言:英文 字幕 |持续时间: 159 讲座 ( 10h 43m ) |大小: 3.5 GB “通过专家制作…

Eclipse 创建 Java 接口

Eclipse 创建 Java 接口 Eclipse 是一款广受欢迎的集成开发环境(IDE),它为 Java 开发者提供了强大的工具和特性,使得创建和管理 Java 接口变得简单而高效。在本教程中,我们将详细介绍如何在 Eclipse 中创建 Java 接口…

JVM_总结详解

1、CPU和内存的交互 了解jvm内存模型前,了解下cpu和计算机内存的交互情况。【因为Java虚拟机内存模型定义的访问操作与计算机十分相似】 有篇很棒的文章,从cpu讲到内存模型:[什么是java内存模型?] 在计算机中,cpu和内存的交互最…

屏幕分辨率|尺寸|颜色深度指纹修改

一、前端通过window.screen接口获取屏幕分辨率 尺寸 颜色深度,横屏竖屏信息。 二、window.screen c接口实现: 1、third_party\blink\renderer\core\frame\screen.idl // https://drafts.csswg.org/cssom-view/#the-screen-interface[ExposedWindow ] …

Linux三剑客-awk

一、什么是awk awk 是一个强大的文本处理工具,它在 Unix 和类 Unix 系统中广泛使用。awk 可以处理文本文件,提取信息,进行模式匹配和文本替换等操作。 二、awk的语法 1.基本语法 awk [options] pattern { action } file 选项参数说明&am…

vue3实现自定义导航菜单

一、创建项目 1. 打开HBuilder X 图1 2. 新建一个空项目 文件->新建->项目->uni-app 填写项目名称:vue3demo 选择项目存放目录:D:/HBuilderProjects 一定要注意vue的版本,当前选择的版本为vue3 图2 点击“创建”之后进入项目界面 图…

再学transformer

再学transformer 位置编码 位置编码 为什么需要位置编码 位置编码分为相对位置编码、绝对位置编码、旋转位置编码

BASLER工业相机维修不能触发拍照如何处理解决这个问题

BASLER工业相机维修不能触发拍照如何处理解决这个问题?最近遇到挺多工业相机维修咨询这个不能触发拍照的案例,所以今天优米佳维修的技术就抽空整理了这篇关于BASLER相机不能触发拍照的处理方法分享给大家。 当碰到巴斯勒工业相机不能触发拍照的问题&…