当前位置: 首页 > 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,以及如何配置环…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…...