vba学习系列(9)--按需求计数单元格数量
系列文章目录
文章目录
- 系列文章目录
- 前言
- 一、按需求计数单元格数量
- 1.需求
- 二、使用步骤
- 1.vba源码
- 2.整理后
- 总结
前言
一、按需求计数单元格数量
1.需求
一个表中有多个类型的单元格内容,比如:文字、数字、特殊字符、字母+数字……
我们要计数字母+数字的单元格数量
同时提取字母+数字单元格的数字部分,判断数字部分是否相同,然后计数不同的单元格数量
二、使用步骤
1.vba源码
代码如下(示例):
Sub CountSpecificFormatStrings()Dim rng As RangeDim cell As RangeDim count, countkey As IntegerDim regex, regex1 As ObjectDim cellAddress As StringDim numbers As StringDim matches As ObjectDim match As VariantDim cellNumber As StringDim cellValue As StringDim myCollection As CollectionSet myCollection = New CollectionDim value As VariantDim lastValue As VariantDim uniqueCount As IntegerDim ws As WorksheetSet ws = ActiveSheetDim cellValueCollection As CollectionDim i, j, k As IntegerDim valueToAdd As StringDim key As VariantDim dict As ObjectDim myArray As VariantDim item, ele As VariantDim elements As VariantDim uniquekeys As New CollectionuniqueCount = 0lastValue = ""Set cellCollection = New CollectionSet dict = CreateObject("Scripting.Dictionary")' 设置要检查的范围Set rng = ws.Range("A3:DR200") ' 假设我们在Sheet1的A1:A10范围内查找count = 0' 创建正则表达式对象Set regex = CreateObject("VBScript.RegExp")' 设置正则表达式模式:一个字母后面跟随任意数量的数字' 这里的模式是 [A-Za-z][0-9]+,其中 [A-Za-z] 匹配任意一个字母,[0-9]+ 匹配一个或多个数字With regex.Global = True.IgnoreCase = True.pattern = "[A-Za-z][0-9]+"End With' 创建正则表达式对象Set regex1 = CreateObject("VBScript.RegExp")' 设置正则表达式模式:一个字母后面跟随任意数量的数字' 这里的模式是 [A-Za-z][0-9]+,其中 [A-Za-z] 匹配任意一个字母,[0-9]+ 匹配一个或多个数字With regex1.Global = True.IgnoreCase = True.pattern = "\d+"End With' 遍历单元格For Each cell In rngIf regex.Test(cell.value) Then ' 如果单元格匹配正则表达式count = count + 1 ' 增加计数Debug.Print "行:" & cell.Row & ",列:" & cell.Column & ",值:" & cell.value'Set matches = regex1.Execute(cell.Value)'For Each match In matches'outputString = outputString & match.Value'Debug.Print outputString'Next match'Debug.Print cell.Row & cell.Column'Debug.Print Cells(cell.Row, cell.Column).ValueSet matches = regex1.Execute(Cells(cell.Row, cell.Column).value)For Each match In matchesmyCollection.Add matchNext matchEnd IfNext cellFor Each item In myCollection'Debug.Print itemNextcountkey = myCollection.countFor i = myCollection.count To 1 Step -1For j = 1 To i - 1If myCollection(i) = myCollection(j) ThenmyCollection.Remove (i)countkey = countkey - 1Exit ForEnd IfNext jNext iFor Each ele In myCollectionDebug.Print eleNext elews.Cells(2, 69).value = countkey' 显示计数结果MsgBox "有 " & countkey & " 个单元格符合指定格式。"
End Sub
2.整理后
代码如下(示例):
Sub CountSpecificFormatStrings()Dim rng As RangeDim cell As RangeDim count, countkey As IntegerDim regex As ObjectDim matches As ObjectDim match As VariantDim myCollection As CollectionSet myCollection = New CollectionDim ws As WorksheetSet ws = ActiveSheetDim i, j As IntegerDim key As VariantDim item, ele As Variant' 设置要检查的范围Set rng = ws.Range("A3:DR200") ' 假设我们在Sheet1的A1:A10范围内查找count = 0' 创建正则表达式对象Set regex = CreateObject("VBScript.RegExp")' 设置正则表达式模式:一个字母后面跟随任意数量的数字' 这里的模式是 [A-Za-z][0-9]+,其中 [A-Za-z] 匹配任意一个字母,[0-9]+ 匹配一个或多个数字With regex.Global = True.IgnoreCase = True.pattern = "[A-Za-z][0-9]+"End With' 创建正则表达式对象Set regex1 = CreateObject("VBScript.RegExp")' 设置正则表达式模式:一个字母后面跟随任意数量的数字' 这里的模式是 [A-Za-z][0-9]+,其中 [A-Za-z] 匹配任意一个字母,[0-9]+ 匹配一个或多个数字With regex1.Global = True.IgnoreCase = True.pattern = "\d+"End With' 遍历单元格For Each cell In rngIf regex.Test(cell.value) Then ' 如果单元格匹配正则表达式count = count + 1 ' 增加计数Debug.Print "行:" & cell.Row & ",列:" & cell.Column & ",值:" & cell.value'Set matches = regex1.Execute(cell.Value)'For Each match In matches'outputString = outputString & match.Value'Debug.Print outputString'Next match'Debug.Print cell.Row & cell.Column'Debug.Print Cells(cell.Row, cell.Column).ValueSet matches = regex1.Execute(Cells(cell.Row, cell.Column).value)For Each match In matchesmyCollection.Add matchNext matchEnd IfNext cellFor Each item In myCollection'Debug.Print itemNextcountkey = myCollection.countFor i = myCollection.count To 1 Step -1For j = 1 To i - 1If myCollection(i) = myCollection(j) ThenmyCollection.Remove (i)countkey = countkey - 1Exit ForEnd IfNext jNext iFor Each ele In myCollectionDebug.Print eleNext elews.Cells(2, 69).value = countkey' 显示计数结果MsgBox "有 " & countkey & " 个单元格符合指定格式。"
End Sub
总结
分享:
读过的书是不是有很多不记得了,但是它一直都是潜在的,它在我们的出言有尺上,嬉闹有度上,做事有余上,说话有德上
相关文章:
vba学习系列(9)--按需求计数单元格数量
系列文章目录 文章目录 系列文章目录前言一、按需求计数单元格数量1.需求 二、使用步骤1.vba源码2.整理后 总结 前言 一、按需求计数单元格数量 1.需求 一个表中有多个类型的单元格内容,比如:文字、数字、特殊字符、字母数字…… 我们要计数字母数字的…...
scale index的计算
scale index定义 基本实现 需要注意,scale index的提出者分别构建了MATLAB和R语言的实现方式。 但是,需要注意,经过我向作者求证。 MATLAB编写的代码已经“过时了”,为了拥抱时代,作者构建了R语言包,名称为…...
鸿蒙实现Web组件开发
目录: 1、简介&使用场景2、加载网络页面3、加载本地页面4、加载HTML格式的文本数据5、设置深色模式6、上传文件7、在新窗口中打开页面8、管理位置权限 1、简介&使用场景 Web是一种基于互联网的技术和资源的网络服务系统。它是指由许多互连的计算机组成的全…...
Linux——linux系统移植
创建VSCode工程 1、将NXP官方的linux内核拷贝到Ubuntu 2、解压缩tar -vxjf linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2 NXP官方开发板Linux内核编译 1、将.vscode文件夹复制到NXP官网linux工程中,屏蔽一些不需要的文件 2、编译NXP官方EVK开发板对应的Linux系统…...
工业摄像头应对复杂环境的策略与解决方案
工业摄像头需应对复杂环境,如极端温度、振动、尘土、光照不足等。为确保稳定工作,它采用了先进技术和设计。详细分析如下: 一、增强环境适应性 采用高灵敏度传感器:使用CMOS或CCD图像传感器,适应低光照条件。 高精度、…...
重生之我在异世界学编程之C语言:深入动态内存管理篇
大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 本文目录 引言正文一 动态内存管理的必要性二 动态…...
【经典论文阅读】Latent Diffusion Models(LDM)
Latent Diffusion Models High-Resolution Image Synthesis with Latent Diffusion Models 摘要 动机:在有限的计算资源下进行扩散模型训练,同时保持质量和灵活性 引入跨注意力层,以卷积方式实现对一般条件输入(如文本或边界框…...
智能指针中的weak_ptr(弱引用智能指针)
弱引用智能指针 std::weak_ptr 可以看做是shared_ptr的助手,它不管理 shared_ptr 内部的指针。std::weak_ptr 没有重载操作符*和->,因为它不共享指针, 不能操作资源,所以它的构造不会增加引用计数,析构也不会减少引用计数,它的…...
【电子通识】机电继电器和固态继电器的区别
机电继电器 机电继电器于19世纪中叶发明。这些器件将线圈与可移动的金属触点结合使用来充当电动开关。这些器件会因为金属触点出现磨损而发生故障,例如焊死在一起。因此,在完全失效之前器件能够进行的开关周期数有限,从而限制了其总体可靠性。 一般情况下继电器控制…...
工业异常检测-CVPR2024-新的3D异常数据合成办法和自监督网络IMRNet
论文:https://arxiv.org/pdf/2311.14897v3.pdf 项目:https://github.com/chopper-233/anomaly-shapenet 这篇论文主要关注的是3D异常检测和定位,这是一个在工业质量检查中至关重要的任务。作者们提出了一种新的方法来合成3D异常数据&#x…...
如何创建对话窗口
文章目录 1. 概念介绍2. 使用方法3. 示例代码我们在上一章回中介绍了Dismissible Widget相关的内容,本章回中将介绍AlertDialog Widget.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们介绍的AlertDialog是指程序中弹出的确认窗口,其实我们在上一章回中删除ListView中…...
新手上路,学Go还是Python
对于新手来说,Go和Python都是很好的编程语言,它们各有特点,以下是详细的对比来帮助你决定先学哪一个: 一、语法和学习难度 Python 语法简洁易懂:Python以其简洁、优雅的语法而闻名,代码的可读性很高。例如…...
<!DOCTYPE html>的作用是什么
一、背景 从今天开始会不定时的发布一些前端的常见面试题,供大家参考。今天要发布的内容是关于html的面试题的作用是什么。接下来就一起讨论以下吧 二、概念 DOCTYPE 是html5中一种标准通用标记语言的文档类型的声明,它的目的就是为了告诉浏览器应该以…...
EasyExcel改名为FastExce做了那些改变呢
回到:github原作者地址:https://github.com/CodePhiliaX/fastexcel 中文 |English | 什么是 FastExcel FastExcel 是由原 EasyExcel 作者创建的新项目。2023 年我已从阿里离职,近期阿里宣布停止更新 EasyExcel,作者他本人决定继…...
狗狗的生育周期:关注与呵护
狗狗的繁殖是一个复杂且需要谨慎对待的过程,了解其生产周期对于宠物主人以及从事相关行业的人员至关重要。 一般而言,狗狗的怀孕周期约为两个月左右,但这并非绝对固定。从受孕到分娩,通常在 58 至 65 天之间波动。小型犬可能相对…...
ABAP DIALOG屏幕编程2
在上一篇博客ABAP DIALOG屏幕编程1中阐述了DIALOG、PBO、PAI的概念并且对常用页面元素怎么用进行了演示。在这一篇博文中会讲述怎么添加下拉框、搜索帮助,怎么创建表控件、屏幕跳转等。会用到上一篇里面的内容。 有关程序包含文件结构如下。 一、响应用户指令 如上…...
获取缓存大小与清除 Web 缓存 - 鸿蒙 HarmonyOS Next
针对浏览器 Web 组件清除缓存相关,具体实现如下 code 实例所示: /*公共方法类*/ export class PublicUtils {/*获取缓存大小*/static async getCacheSize(): Promise<number> {try {let bundleStats await storageStatistics.getCurrentBundleStats()let size bundleS…...
在Unreal Engine中,UHT与反射机制
UHT(Unreal Header Tool) 是虚幻引擎(Unreal Engine)中的一个重要工具,它用于处理和生成引擎所需的元数据,使得虚幻引擎能够执行许多复杂的功能,如反射、序列化、蓝图交互、垃圾回收等。简而言之…...
SQL项目实战与综合应用——项目设计与需求分析
项目设计与需求分析是软件开发过程中的核心环节,尤其在涉及数据库的应用时,良好的设计将直接影响到项目的可扩展性、性能和维护性。本文将深入探讨数据库设计的最佳实践,结合 C 与 SQL 的实际应用场景,涵盖项目需求收集、数据库设…...
分布式中的CAP定理和BASE理论与强弱一致性
分布式中的CAP定理和BASE理论与强弱一致性 CAP定理 CAP定理,也称为布鲁尔定理(Brewer’s Theorem),是由加州大学伯克利分校的Eric Brewer教授在2000年提出的,并由麻省理工学院的Seth Gilbert和Nancy Lynch于2002年正…...
从零构建高频无线传输系统:调幅技术实战解析
1. 调幅无线传输系统入门指南 第一次接触调幅无线传输系统时,我也被各种专业术语搞得一头雾水。简单来说,调幅(AM)就是通过改变载波信号的幅度来传递信息的技术。想象一下快递员送包裹:载波就像快递车,而我们要发送的信息就是包裹…...
移动通信浪潮如何重塑半导体产业格局:从高通与英特尔市值对比说起
1. 从市场估值看产业浪潮:移动通信如何重塑半导体格局2013年春天,一则消息在半导体和投资圈内引发了不小的震动:无线通信芯片巨头高通(Qualcomm)的市值,悄然与行业传统霸主英特尔(Intel…...
上古卷轴5天际整合包下载最新全热门MOD整合(画质+人物+功能+场景全美化)下载分享
一、整合包基础概况 新手向懒人专属整合资源,适配电脑Windows系统。整合包集成多款热门优质MOD,无需玩家单独下载模组,整合包整体兼容性强,适配主流家用电脑,官方提前做好模组适配优化,规避多数模组冲突问…...
3步解锁联想刃7000k BIOS隐藏功能:安全提升硬件性能的完整指南
3步解锁联想刃7000k BIOS隐藏功能:安全提升硬件性能的完整指南 【免费下载链接】Lenovo-7000k-Unlock-BIOS Lenovo联想刃7000k2021-3060版解锁BIOS隐藏选项并提升为Admin权限 项目地址: https://gitcode.com/gh_mirrors/le/Lenovo-7000k-Unlock-BIOS 联想刃7…...
NVIDIA显卡终极调校指南:用Profile Inspector释放游戏潜能的简单方法
NVIDIA显卡终极调校指南:用Profile Inspector释放游戏潜能的简单方法 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 还在为游戏卡顿、画面撕裂而烦恼吗?NVIDIA Profile Inspect…...
智能设备语音交互进阶:从‘慢交互’到‘快交互’,详解ONESHOT模式下的音频残留音过滤实战
智能设备语音交互进阶:ONESHOT模式下的音频残留音过滤实战 在智能语音交互领域,ONESHOT模式已经成为提升用户体验的关键技术。这种允许用户在唤醒设备后无需二次唤醒即可直接下达指令的交互方式,正在重塑人机对话的自然流畅度。然而ÿ…...
联想刃7000k BIOS解锁终极指南:安全释放隐藏性能的3种方法
联想刃7000k BIOS解锁终极指南:安全释放隐藏性能的3种方法 【免费下载链接】Lenovo-7000k-Unlock-BIOS Lenovo联想刃7000k2021-3060版解锁BIOS隐藏选项并提升为Admin权限 项目地址: https://gitcode.com/gh_mirrors/le/Lenovo-7000k-Unlock-BIOS 对于联想刃7…...
AVL许可排队严重?不想买新许可,回收闲置即刻算例
AVL许可排队严重?不买新许可,回收闲置许可就能解决,我就踩过这个坑关键词分析:AVL里藏着的宝藏AVL许可排队严重?别急着买新许可!我们先来看看这个问题到底藏哪儿。2026年我帮某制造业客户做系统优化时&…...
我开会用了之后从怀疑到真香!2026华为手机语音转文字真后悔没早用
我上周差点因为漏记项目评审会的核心需求背锅,前前后后踩了N多会议记录的坑,用过不下10款语音转文字工具,掏心窝子说一句:听脑AI是同类工具中最值得职场人用的,没有之一。之前我真的不信什么语音转文字能解决所有问题&…...
NCM音乐解锁终极指南:3步实现网易云音乐格式自由转换
NCM音乐解锁终极指南:3步实现网易云音乐格式自由转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM加密文件无法在其他播放器使用而烦恼吗?ncmdump解密工具让你轻松突破格式限制&…...
