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

VBA常用的字符串内置函数

前言

在VBA程序中,常用的内置函数可以按照功能分为字符串函数、数字函数、转换函数等等,本节主要会介绍常用的字符串的内置函数,包括Len()、Left()、Mid()、Right()、Split()、String()、StrConV()等。
本节的练习数据表以下表为例:
在这里插入图片描述


1.使用Len()计算字符串长度

示例:

Sheet1的A列是商品的ID编码,现需要检查商品编码是否正确,其中正确的商品编码应该为10位字符组成,最终需在B列记录检查结果。完整的代码如下:

Sub LenTest()Dim ws As Worksheet   ' 声明变量用来存储worksheet对象Dim lastRow As IntegerDim i As Integer' 设置worksheetSet ws = ThisWorkbook.Worksheets("Sheet1")' 获取工作表的最大行数lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row' 循环遍历查询,因第一行为表头,故从第二行开始循环For i = 2 To lastRow' 判断A列值的长度是否等于10If Len(ws.Cells(i, "A").Value) = 10 Thenws.Cells(i, "B").Value = "True"Elsews.Cells(i, "B").Value = "False"End IfNext iEnd Sub

2.字符串截取函数Left、Mid、Right

若需要提取字符串中的某一部分时,则可以通过函数Left()、Mid()、Right()函数来进行实现。

函数语法说明
Left()Left(String,Length)获取字符串从左开始,截取指定数量Length的字符串
Mid()Mid(String,Start,Length)获取字符串从固定位置Start开始,截取指定数量Length的字符串
Right()Right(String,Length)获取字符串从右开始,截取指定数量Length的字符串
说明:

String是需要处理的字符串
Length表示需要截取字符串的长度,其中Mid()函数中的Length为非必填项
Start是Mid()函数中用来表示从左数第几个字符开始,若length未填则表示一直截取到最后

示例:

在Sheet1中C列为商品的产品型号,由品牌、名称、型号构成,现需要将产品型号进行拆分后,在F、G、H 三列中的别填入品牌、名称、型号信息,完整的代码如下:

Sub StringTest()Dim ws As Worksheet   ' 声明变量用来存储worksheet对象Dim lastRow As IntegerDim i As Integer' 设置worksheetSet ws = ThisWorkbook.Worksheets("Sheet1")' 获取工作表的最大行数lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row' 循环遍历查询,因第一行为表头,故从第二行开始循环For i = 2 To lastRow' 获取品牌--从左取3个字符ws.Cells(i, "F").Value = Left(ws.Cells(i, "C").Value, 3)' 获取名称--从第5个字符开始取4位ws.Cells(i, "G").Value = Mid(ws.Cells(i, "C").Value, 5, 4)' 获取型号--从右取3个字符ws.Cells(i, "H").Value = Right(ws.Cells(i, "C").Value, 3)Next iEnd Sub
运行后截图

在这里插入图片描述

3. 字符串分割Split()

使用Split()可以按照固定的分隔符对字符串进行分割,最终返回类型为数组(默认数组下标从0开始)
如以上案例中,C列的产品型号由品牌、名称、型号构成,三者之间通过“-”进行连接,那么在拆分时也可以通过“-”来进行分割处理,完整的代码如下:

Sub StringTest()Dim ws As Worksheet   ' 声明变量用来存储worksheet对象Dim lastRow As IntegerDim i As Integer' 设置worksheetSet ws = ThisWorkbook.Worksheets("Sheet1")' 获取工作表的最大行数lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row' 循环遍历查询,因第一行为表头,故从第二行开始循环For i = 2 To lastRow' 获取品牌--分割后获取数组下标为0ws.Cells(i, "F").Value = Split(ws.Cells(i, "C").Value, "-")(0)' 获取名称--分割后获取数组下标为1ws.Cells(i, "G").Value = Split(ws.Cells(i, "C").Value, "-")(1)' 获取型号--分割后获取数组下标为2ws.Cells(i, "H").Value = Split(ws.Cells(i, "C").Value, "-")(2)Next iEnd Sub

4. String()可生成重复字符串

String(Number,Char) 函数用于生成指定长度Number的重复的字符串Char

示例:

在sheet1中J列为联系电话,为保护联系人的隐私,现需要将其电话号码的中间四位数字隐藏,使用星号*代替。

思路:

先通过Mid() 函数提取出联系电话中间的四位数字,随后使用Replace()函数进行替换,替换后的字符串使用String()来定义,完成的代码如下:

Sub StringTest()Dim ws As Worksheet   ' 声明变量用来存储worksheet对象Dim lastRow As IntegerDim i As IntegerDim strTel As String  ' 定义联系电话变量' 设置worksheetSet ws = ThisWorkbook.Worksheets("Sheet1")' 获取工作表的最大行数lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row' 循环遍历查询,因第一行为表头,故从第二行开始循环For i = 2 To lastRow' 替换联系电话中间四位数字为四个星号*strTel = ws.Cells(i, "J").Valuews.Cells(i, "J").Value = Replace(strTel, Mid(strTel, 4, 4), String(4, "*"))Next iEnd Sub
运行后截图

在这里插入图片描述

5. StrConV()转换字符串

StrConv()函数可以实现对字符串英文的大小写转换,还能实现其他类型的一些转换,主要用法是StrConv(String,Conversion,<LCID>),其中String表示待处理的字符串,Conversion表示执行转换的类型,LCID为可选参数,表示与系统LocaleID不同,则为LocaleID。

关于Conversion转换类型,可参考下表总结
常量名称说明
vbUpperCase1将字符串转换成全部大写形式
vbLowerCase2将字符串转换成全部小写形式
vbProperCase3将字符串转换成首字母大写形式
vbWide4将字符串中的单字节字符转换成双字节字符
vbNarrow8将字符串中的双字节字符转换成单字节字符
vbUnicode64将字符串根据系统的默认编码转换成Unicode
vbFromUnicode128将字符串由Unicode转换成系统的默认编码
示例

在Sheet1的I列联系人中,为规范格式,先需要将该列内容统一修改为首字母大写的形式,完整的代码如下:

Sub StringTest()Dim ws As Worksheet   ' 声明变量用来存储worksheet对象Dim lastRow As IntegerDim i As Integer' 设置worksheetSet ws = ThisWorkbook.Worksheets("Sheet1")' 获取工作表的最大行数lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row' 循环遍历查询,因第一行为表头,故从第二行开始循环For i = 2 To lastRow' 修改I列 联系人的格式为首字母大写ws.Cells(i, "I").Value = StrConv(ws.Cells(i, "I").Value, vbProperCase)Next iEnd Sub
运行后截图

在这里插入图片描述


扩展

以下表格整理了字符串常用的字符串函数

函数返回类型功能示例返回值
StrComp(字符串1,字符串2, [,比较])VariantInteger比较两个字符串。字符串1<字符串2,返回值-1;字符串1=字符串2,返回值0;字符串1>字符串2,返回值1;StrComp(“AE”,“FS4”)-1
StrConv(字符串,数字)String变换字符串。数字为1时,将字符串内容转换成大写;数字为2时,将字符串转换成小写…StrConv(“fghh”,1);StrConv(“AAhh”,2)“FGHH”;“aahh”
Format(字符串,可选参数)VariantString设置字符串格式Format(Date,“Long Date”)“2024年7月5日”
LCase(字符串)String将字符串转换成小写LCase(“LoNg”)“long”
UCase(字符串)String将字符串转换成大写UCase(“LoNg”)“LONG”
Space(长度)String将字符串中插入整个空格“Hi” & Space(2) & “World”“Hi World”
String(长度,字符)String重复数个字符String(5,“*”)“*****”
Len(字符串)Long计算字符串的长度Len(“Customer”)8
InStr([开始位置,]字符串1,字符串2[,比较])VariantLong字符串2在字符串1中最先出现的位置,若不存在则返回0InStr(1,“GHmdml”,“m”)3
Left(字符,长度)String从左起取指定个数的字符Left(“fdgm32”,4)“Fdgm”
Right(字符,长度)String从右起取指定个数的字符Right(“fdgm32”,4)“gm32”
Mid(字符,开始位置[,长度])String从开始位置起取指定个数的字符Mid(“fdgm3245”,4,3)“324”
LTrim(字符串)String去掉字符串左边的空格LTrim(" ghd ")"ghd "
RTrim(字符串)String去掉字符串右边的空格RTrim(" ghd ")" ghd"
Trim(字符串)String去掉字符串前后两边的空格Trim(" ghd ")“ghd”
Asc(字符串)Integer字符串收字裤的ASCII代码Asc(“abc”)97
Chr(数字)String将数字转换成ASCII代码执行的字符Chr(65)“A”
Str(数字)String将数字转换成字符串Str(54)“54”
Val(字符串)Variant字符串转换成数字Val(“54D5SL23”)54000000

相关文章:

VBA常用的字符串内置函数

前言 在VBA程序中&#xff0c;常用的内置函数可以按照功能分为字符串函数、数字函数、转换函数等等&#xff0c;本节主要会介绍常用的字符串的内置函数&#xff0c;包括Len()、Left()、Mid()、Right()、Split()、String()、StrConV()等。 本节的练习数据表以下表为例&#xff…...

大数据面试题之Spark(7)

目录 Spark实现wordcount Spark Streaming怎么实现数据持久化保存? Spark SQL读取文件&#xff0c;内存不够使用&#xff0c;如何处理? Spark的lazy体现在哪里? Spark中的并行度等于什么 Spark运行时并行度的设署 Spark SQL的数据倾斜 Spark的exactly-once Spark的…...

AI绘画 Stable Diffusion图像的脸部细节控制——采样器全解析

大家好&#xff0c;我是画画的小强 我们在运用AI绘画 Stable Diffusion 这一功能强大的AI绘图工具时&#xff0c;我们往往会发现自己对提示词的使用还不够充分。在这种情形下&#xff0c;我们应当如何调整自己的策略&#xff0c;以便更加精确、全面地塑造出理想的人物形象呢&a…...

liunx离线安装Firefox

在Linux系统中离线安装Firefox浏览器&#xff0c;您需要先从Mozilla的官方网站下载Firefox的安装包&#xff0c;然后通过终端进行安装。以下是详细的步骤&#xff1a; 准备工作 下载Firefox安装包&#xff1a; 首先&#xff0c;在一台可以上网的电脑上访问Firefox官方下载页面…...

UNet进行病理图像分割

数据集链接&#xff1a;https://pan.baidu.com/s/1IBe_P0AyHgZC39NqzOxZhA?pwdnztc 提取码&#xff1a;nztc UNet模型 import torch import torch.nn as nnclass conv_block(nn.Module):def __init__(self, ch_in, ch_out):super(conv_block, self).__init__()self.conv nn…...

初二数学基础差从哪开始补?附深度解析!

有时候&#xff0c;当你推不开一扇门的时候&#xff0c;不要着急&#xff0c;试着反方向拉一下&#xff0c;或者横向拉一下。下面是小偏整理的初二数学基础差从哪开始补2021年&#xff0c;感谢您的每一次阅读。   初二数学基础差从哪开始补2021年   第一个问题是很多同学都…...

【C语言】return 关键字

在C语言中&#xff0c;return是一个关键字&#xff0c;用于从函数中返回值或者结束函数的执行。它是函数的重要组成部分&#xff0c;负责将函数的计算结果返回给调用者&#xff0c;并可以提前终止函数的执行。 主要用途和原理&#xff1a; 返回值给调用者&#xff1a; 当函数执…...

华为机试HJ13句子逆序

华为机试HJ13句子逆序 题目&#xff1a; 将一个英文语句以单词为单位逆序排放。例如“I am a boy”&#xff0c;逆序排放后为“boy a am I”所有单词之间用一个空格隔开&#xff0c;语句中除了英文字母外&#xff0c;不再包含其他字符 想法&#xff1a; 将输入的字符串通过…...

代码随想录day40 动态规划(5)

52. 携带研究材料&#xff08;第七期模拟笔试&#xff09; (kamacoder.com) 完全背包&#xff0c;可重复放入物品&#xff0c;需要用一维滚动数组从前往后遍历。 由于第0个物品和后面物品的转移方程没有区别&#xff0c;可以不额外初始化dp数组&#xff0c;直接用元素全0的d…...

FFmpeg 命令行 音视频格式转换

&#x1f4da;&#xff1a;FFmpeg 提供了丰富的命令行选项和功能&#xff0c;可以用来处理音视频文件、流媒体等&#xff0c;掌握命令行的使用&#xff0c;可以有效提高工作效率。 目录 一、视频转换和格式转换 &#x1f535; 将视频文件转换为另一种格式 &#x1f535; 指定…...

Jmeter使用JSON Extractor提取多个变量

1.当正则不好使时&#xff0c;用json extractor 2.提取多个值时&#xff0c;默认值必填&#xff0c;否则读不到变量...

c++ 设计模式 的课本范例(下)

&#xff08;19&#xff09; 桥接模式 Bridge&#xff0c;不是采用类继承&#xff0c;而是采用类组合&#xff0c;一个类的数据成员是类对象&#xff0c;来扩展类的功能。源码如下&#xff1a; class OS // 操作系统负责绘图 { public:virtual ~OS() {}virtual void draw(cha…...

结合数据索引结构看SQL的真实执行过程

引言 关于数据库设计与优化的前几篇文章中&#xff0c;我们提到了数据库设计优化应该遵守的指导原则、数据库底层的索引组织结构、数据库的核心功能组件以及SQL的解析、编译等。这些其实都是在为SQL的优化、执行的理解打基础。 今天这篇文章&#xff0c;我们以MySQL中InnoDB存…...

spark shuffle——shuffle管理

ShuffleManager shuffle系统的入口。ShuffleManager在driver和executor中的sparkEnv中创建。在driver中注册shuffle&#xff0c;在executor中读取和写入数据。 registerShuffle&#xff1a;注册shuffle&#xff0c;返回shuffleHandle unregisterShuffle&#xff1a;移除shuff…...

HTMLCSS(入门)

HTML <html> <head><title>第一个页面</title></head><body>键盘敲烂&#xff0c;工资过万</body> </html> <!DOCTYPE>文档类型声明&#xff0c;告诉浏览器使用哪种HTML版本显示网页 <!DOCTYPE html>当前页面采取…...

富格林:曝光可信策略制止亏损

富格林指出&#xff0c;相信大家都对黄金投资的价值空间有目共睹&#xff0c;现如今黄金市场波动频繁&#xff0c;因此不少投资者也开始加入该市场试图赢得额外的财富。但作为新手投资者贸贸然地进场操作&#xff0c;亏损的几率是很大的&#xff0c;因此要学会掌握正规平台曝光…...

Android --- Service

出自于此&#xff0c;写得很清楚。关于Android Service真正的完全详解&#xff0c;你需要知道的一切_android service-CSDN博客 出自【zejian的博客】 什么是Service? Service(服务)是一个一种可以在后台执行长时间运行操作而没有用户界面的应用组件。 服务可由其他应用组件…...

Vue3从入门到精通(三)

vue3插槽Slots 在 Vue3 中&#xff0c;插槽&#xff08;Slots&#xff09;的使用方式与 Vue2 中基本相同&#xff0c;但有一些细微的差异。以下是在 Vue3 中使用插槽的示例&#xff1a; // ChildComponent.vue <template><div><h2>Child Component</h2&…...

【FreeRTOS】同步与互斥通信-有缺陷的互斥案例

目录 同步与互斥通信同步与互斥的概念同步与互斥并不简单缺陷分析汇编指令优化过程 - 关闭中断时间轴分析 思考时刻 参考《FreeRTOS入门与工程实践(基于DshanMCU-103).pdf》 同步与互斥通信 同步与互斥的概念 一句话理解同步与互斥&#xff1a;我等你用完厕所&#xff0c;我再…...

Docker 安装 Python

Docker 安装 Python 在当今的软件开发领域,Docker 已成为一项关键技术,它允许开发人员将应用程序及其依赖环境打包到一个可移植的容器中。Python,作为一种广泛使用的高级编程语言,经常被部署在 Docker 容器中。本文将详细介绍如何在 Docker 中安装 Python,以及如何配置环…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...