首页 >> 综合 > 知识问答 >

问vba 中 instr 函数的使用方法 查找字符位置详解

2026-11-14 10:39:55

答

vba 里面 instr 函数核心作用就是在一段字符串里面,查找指定子字符串第一次出现的起始位置,返回的结果是数字序号,如果没有找到目标字符,函数就返回 0,这个函数是 excel vba 里面最常用的文本处理函数,经常用来拆分文本 判断是否包含关键字 提取分隔符前后内容,很多初学者容易混淆 instr 和 instrrev,instr 是从字符串左边开始往右查找,instrrev 是从右边往左边查找,同时 instr 还支持设置起始查找位置,也可以选择区分大小写或者不区分大小写,写代码的时候如果参数顺序写错,程序就会报错,这个是新手最常见错误,instr 函数在 excel access wps vba 环境都可以正常使用,适合批量处理单元格文本,比如按逗号 横线 空格分割内容,是文本类自动化脚本必备函数。

函数语法格式

InStr ([start], string1, string2, [compare])

参数说明

start 可选参数,代表从第几个字符开始查找,默认是从 1 也就是第一个字符开始

string1 必选参数,原始完整字符串,也就是被查找的母串

string2 必选参数,想要查找的目标子字符串

compare 可选参数,指定比较方式,vbBinaryCompare 区分大小写,vbTextCompare 不区分大小写

参数对照表

参数是否必填含义常用取值
start可选查找起始位置正整数,默认 1
string1必填原始母字符串单元格内容或者变量文本
string2必填待查找子串要定位的关键字
compare可选比较模式vbBinaryCompare 0 区分大小写,vbTextCompare 1 不区分大小写

返回值规则

找到子串,返回子串第一个字符在母串里面的位置数字

没有找到子串,返回 0

如果 string2 是空字符串,返回 start 参数设定的起始位置

如果 string1 是空字符串,返回 0

分步代码示例

基础示例 不设置起始位置,默认从第一位查找

Dim pos As Long

pos = InStr ("hello world", "o")

代码执行之后 pos 的值是 5,也就是字母 o 第一次出现的位置

示例 指定起始查找位置,跳过前面已经找到的字符

pos = InStr (7, "hello world", "o")

从第 7 位开始查找,找到后面的 o,返回 8

示例 不区分大小写查找

pos = InStr (1, "Hello World", "W", vbTextCompare)

这个写法可以识别大写 H 里面的小写 w,不会因为大小写差异查找失败

实战案例 按逗号拆分单元格文本

Dim s As String, p As Long

s = "苹果,香蕉,橙子"

p = InStr (s, ",")

If p > 0 Then

MsgBox Left (s, p - 1)

End If

这段代码就是利用 instr 找到逗号位置,再配合 left 函数提取逗号前面的内容

易错要点清单

第一 参数顺序不能颠倒,很多人把 string1 和 string2 写反,导致结果错误

第二 区分大小写默认是开启的,也就是默认 vbBinaryCompare,查找的时候大小写不一样就识别不到,需要忽略大小写必须加上 compare 参数

第三 下标是从 1 开始计数,不是从 0 开始,这个和很多编程语言不一样,是 vba 特点

第四 instr 只返回第一次出现的位置,如果需要查找所有出现位置,需要循环不断更新 start 参数继续查找

第五 区分 instr 和 instrrev,instr 从左向右,instrrev 从右向左,不要混用

综合掌握 vba 中 instr 函数的使用方法,记住它是从左向右查找子串首次位置,掌握四个参数含义,理解返回 0 代表未找到,熟练搭配 left mid right 函数做文本拆分,写批量文本处理 vba 代码的时候就可以灵活调用这个函数。

【常见问题】

问题 1 vba 中 instr 函数查找不到内容返回什么

回答 1 vba 中 instr 函数如果没有找到目标子串,会返回数字 0,写代码的时候可以根据这个返回值判断字符串是否包含关键字。

问题 2 vba 中 instr 函数默认区分大小写吗

回答 1 vba 中 instr 函数默认是区分大小写,如果想让 vba 中 instr 函数忽略大小写,需要在参数里面加入 vbTextCompare。

问题 3 vba 中 instr 和 instrrev 有什么区别

回答 1 vba 中 instr 函数是从左向右查找子串第一次出现位置,instrrev 是从右向左查找,学习 vba 中 instr 函数使用方法的时候,一定要分清这两个函数查找方向。

【免责申明】

本内容仅为 vba 函数学习参考,不同版本 excel wps 的 vba 环境存在细微差异,请结合实际软件版本测试代码。

 

相关阅读

最新文章
站长推荐