VBA常用的字符串内置函数

news2025/1/11 0:03:11

前言

在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 Integer
    Dim i As Integer
    
    ' 设置worksheet
    Set ws = ThisWorkbook.Worksheets("Sheet1")
    
    ' 获取工作表的最大行数
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ' 循环遍历查询,因第一行为表头,故从第二行开始循环
    For i = 2 To lastRow
        ' 判断A列值的长度是否等于10
        If Len(ws.Cells(i, "A").Value) = 10 Then
            ws.Cells(i, "B").Value = "True"
        Else
            ws.Cells(i, "B").Value = "False"
        End If
    Next i

End 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 Integer
    Dim i As Integer
    
    ' 设置worksheet
    Set 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 i

End Sub
运行后截图

在这里插入图片描述

3. 字符串分割Split()

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

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

End Sub

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

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

示例:

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

思路:

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

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

End 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 Integer
    Dim i As Integer
    
    ' 设置worksheet
    Set 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 i

End 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

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

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

相关文章

Mybatis实现RBAC权限模型查询

RBAC权限模型 Role-Based Access Control&#xff0c;中文意思是&#xff1a;基于角色&#xff08;Role&#xff09;的访问控制。这是一种广泛应用于计算机系统和网络安全领域的访问控制模型。 简单来说&#xff0c;就是通过将权限分配给➡角色&#xff0c;再将角色分配给➡用…

leetcode--二叉树中的最长交错路径

leetcode地址&#xff1a;二叉树中的最长交错路径 给你一棵以 root 为根的二叉树&#xff0c;二叉树中的交错路径定义如下&#xff1a; 选择二叉树中 任意 节点和一个方向&#xff08;左或者右&#xff09;。 如果前进方向为右&#xff0c;那么移动到当前节点的的右子节点&…

盘点AI做自媒体五条赚钱路径,新手小白必看(附教程)

前言 盘点用AI做自媒体赚钱的五条路径&#xff0c;只要学会使用AI工具&#xff0c;你也可以马上赚到钱。 我认为短视频是趋势&#xff0c;但相比于短视频而言&#xff0c;AI则是未来更大的趋势。 AI现在才属于萌芽期&#xff0c;好比是98年的互联网和07年的移动互联网&#x…

Jmeter使用JSON Extractor提取多个变量

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

Linux - Shell 以及 权限问题

目录 Shell的运行原理 Linux权限问题 Linux权限的概念 如何实现用户账号之间的切换 如何仅提升当前指令的权限 如何将普通用户添加到信任列表 Linux权限管理 文件访问者的分类&#xff08;人&#xff09; 文件类型和访问权限&#xff08;事物属性&#xff09; 文件权限值的表…

【基于深度学习方法的激光雷达点云配准系列之GeoTransformer】——模型部分浅析(1)

【GeoTransformer系列】——模型部分 1. create_model2. model的本质3. 模型的主要结构3.1 backbone3.2 transformer本篇继续对GeoTransformer/experiments/geotransformer.kitti.stage5.gse.k3.max.oacl.stage2.sinkhorn/下面的trainval.py进行详细的解读,主要是模型部分, 可以…

一款针对Webpack等前端打包工具所构造的网站进行快速、高效安全检测的扫描工具

免责声明 由于传播、利用本公众号夜组安全所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;公众号夜组安全及作者不为此承担任何责任&#xff0c;一旦造成后果请自行承担&#xff01;如有侵权烦请告知&#xff0c;我们会立即删除…

硅纪元视角 | 法国8人团队发布Moshi,挑战OpenAI的开源实时多模态模型!

在数字化浪潮的推动下&#xff0c;人工智能&#xff08;AI&#xff09;正成为塑造未来的关键力量。硅纪元视角栏目紧跟AI科技的最新发展&#xff0c;捕捉行业动态&#xff1b;提供深入的新闻解读&#xff0c;助您洞悉技术背后的逻辑&#xff1b;汇聚行业专家的见解&#xff0c;…

51单片机-让一个LED灯闪烁、流水灯(涉及:自定义单片机的延迟时间)

目录 设置单片机的延迟&#xff08;睡眠&#xff09;函数查看单片机的时钟频率设置系统频率、定时长度、指令集 完整代码生成HEX文件下载HEX文件到单片机流水灯代码 (自定义延迟时间) 设置单片机的延迟&#xff08;睡眠&#xff09;函数 查看单片机的时钟频率 检测前单片机必…

红海云签约海新域集团,产业服务运营领军企业加速人力资源数字化转型

北京海新域城市更新集团有限公司&#xff08;以下简称“海新域集团”&#xff09;是北京市海淀国有资产投资集团有限公司一级监管企业&#xff0c;致力于成为国内领先的产业服务运营商。集团积极探索城市和产业升级新模式&#xff0c;通过对老旧、低效等空间载体重新定位规划、…

【Python】成功解决TypeError: iteration over a 0-d tensor

【&#x1f40d;Python】成功解决TypeError: iteration over a 0-d tensor 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xf…

赶快收藏!全网最佳websocket封装:完美支持断网重连、自动心跳!

简介 websocket在前端开发中,是一个必须掌握的技术!你可以不用,但必须掌握! 前几天,就遇到这样一个需求,要求界面的数据通过websocket实时推送,并且必须支持断网重连、自动心跳! 自动心跳是定期向服务端发送小型数据包,如果一段时间内服务端没有收到心跳响应,系统可…

大模型LLMs概述:利用大模型 (LLMs) 解决信息抽取任务

论文标题&#xff1a;Large Language Models for Generative Information Extraction: A Survey 论文链接&#xff1a;https://arxiv.org/pdf/2312.17617.pdf 论文主要探讨了大型语言模型&#xff08;LLMs&#xff09;在生成式信息抽取&#xff08;IE&#xff09;任务中的应用…

1.1.2数据结构的三要素

一.数据结构的三要素 数据结构这门课着重关注的是数据元素之间的关系&#xff0c;和对这些数据元素的操作&#xff0c;而不关心具体的数据项内容 。 1.逻辑结构 &#xff08;1&#xff09;集合结构 &#xff08;2&#xff09;线性结构 数据元素之间是一对一的关系。除了第一个…

【C语言】return 关键字

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

AI绘画Stable Diffusion画全身图总是人脸扭曲?ADetailer插件实现一键解决!

大家好&#xff0c;我是向阳 你是否遇到过SD生成的人物脸部扭曲、甚至令人恶心的情况&#xff1f;也曾感到束手无策&#xff1f;别担心&#xff0c;这份教程专为你而来。 在使用SD生成人物全身照时&#xff0c;你可能经常发现人物的脸部会出现扭曲问题。这是因为人物面部像素…

TP8/6 更改后台入口地址admin改为myadmin 隐藏真实后台网址

原来www.xxx.com/admin 改后www.xxx.com/myadmin config/app.php // 应用映射&#xff08;自动多应用模式有效&#xff09;app_map > [admintest>admin], 官方文档&#xff1a;ThinkPHP官方手册

免费申请 HTTPS 证书的八大方法

大家好,我是CodeQi! 一位热衷于技术分享的码仔。 为了保证网站的安全和数据的隐私性,使用 HTTPS 加密协议已成为必需。HTTPS 证书由受信任的证书颁发机构 (CA) 签发,可以加密客户端和服务器之间的通信。 幸运的是,有许多方法可以免费申请 HTTPS 证书。本文将介绍八种方法…

云仓酒庄天津分公司:深化业务常态化运营

标题&#xff1a;云仓酒庄天津分公司&#xff1a;深化业务常态化运营&#xff0c;以沙龙为纽带&#xff0c;构建价值叠加的酒业新生态 在当今复杂多变的经济环境中&#xff0c;传统酒业面临着前所未有的挑战与机遇。随着数字化转型的加速和消费者偏好的日益多元化&#xff0c;…