FINDB 函数一、函数介绍
1. 函数:FINDB(find_text, within_text, [start_num])
2. 描述:获取字符串中子字符串的位置,即一个字符串是否包含了另一个字符串,若是包含则返回被包含了的字符串的位置在字符串中的位置,字符串中第一个字符的位置是 1,每个双字节字符 FINDB 函数是按 2 计算的,例如获取 "E" 在 "你好Excel" 中的位置, "你好Excel" 包含了 "E" ,返回 "E" 在 "你好Excel" 中的位置也就是 5,因为 “你好” 占了 4 个位置,“E” 在第 5 的位置;若是没有包含则返回 #VALUE,例如 "你好Excel" 中不包含 “K” ,返回 #VALUE。
因为双字节字符有两个位置,如果查找的子字符串是双字节字符,且指定查找的位置恰好是子字符串开始位置,如果指定的位置落在双字节字符第一个位置查找成功,如果是第二个位置则查找失败,例如 “你好Excel” 字符串中查找 “好” 字的位置,“好”字有 3 和 4 两个位置,指定从位置 3 查找成功,4 查找失败。
FINDB 函数是区分大小写的。
★★★★★★★★★★★★★★★★★★★★
扩展知识:
FINDB 函数与 FIND 函数的区别在于,FINDB 函数会将双字节字符按 2 计算,单字节字符按 1 计算;而 FIND 函数双字节和单字节字符都按 1 计算。双字节的字符有中文、日文和韩文等。
若需要不区分大小写获取字符串中子字符串的位置且每个双字节字符占两个位置可使用 SEARCHB 函数,SEARCHB(find_text,within_text,[start_num])。
★★★★★★★★★★★★★★★★★★★★
3. 参数:
find_text : 子字符串。
within_text : 是否包含了子字符串的字符串。
[start_num] : 可选,指定开始查找的位置。
参数细节说明:
1. 如果字符串 within_text 中包含多个 find_text,则返回第一个匹配项的位置。
2. 若是子字符串 find_text 为空,FINDB 函数默认返回 1;若是子字符串为空且指定有效的开始查找位置 start_num,则返回指定位置 start_num;如果子字符串为空且指定开始查找位置是双字节字符的第二个位置,则返回该位置 + 1 ;如果子字符串为空且指定查找的位置超过字符串长度则返回字符串长度 + 1 。
3. 默认是从字符串 within_text 的第一个字符找起,也可指定的位置 start_num 找起,但如果指定的位置大于字符串的长度或小于零,则返回 #VALUE! 。
4. 引入版本:2007
二、函数使用演示
1. 不指定位置查找
如图 2-1,单元格 C1 到 C4 数据如下:
你好Excel
ABCDEFG
你好Excel
你好Excel
单元格 D1 到 D4 数据如下(D4 为空):
E
E
D
选中 E1 单元格在编辑栏中输入公式 =FINDB(D1, C1) 回车 ,按 Ctrl + 鼠标向下拖动填充数据,可看到
单元格 C1 中有一个匹配 D1 的,因为前面有两个汉字是双字节字符,FINDB 函数返回位置 5;
单元格 C2 中有一个匹配 D2 的,前面都是单字节字符所以 FINDB 函数返回 5;
C3 没有包含 D3 的内容 FINDB 函数返回 #VALUE!;
D4 为空 FINDB 函数返回 1。
图 2-1 不指定位置查找
2. 指定位置查找
如图 2-2,单元格 C7 到 C10 数据如下:
Excel泥嚎你好
Excel你好你好
Excel你好泥嚎
Excel你好你好
单元格 D7 到 D10 数据如下(D10 为空):
你好
你好
你好
选中 E7 单元格在编辑栏中输入公式 =FINDB(D7, C7, 7) 回车 ,按 Ctrl + 鼠标向下拖动填充数据,可看到
C8 包含两个 D8,但指定开始查找位置是 7,大于第一个匹配的位置,所以 FINDB 函数返回第二个匹配的位置 10;
C9 包含一个 D9,但指定开始查找位置大于第一个匹配的位置,后面没有匹配的,所以返回 #VALUE! ;
在 C10 中要查找的 D10 为空且指定了开始查找位置,所以 FINDB 函数返回该指定开始查找位置 + 1 即 7 + 1 等于 8 。
图 2-2 指定位置查找
3. 指定无效位置
如图 2-3,单元格 C13 到 C15 数据如下:
你好Excel
你好Excel
你好Excel
单元格 D13 到 D15 数据如下(D15 为空):
你好
你好
选中 E13 单元格在编辑栏中输入公式 =FINDB(D13, C13, -1) 回车,由于指定开始查找位置是 -1 小于 0,所以 FINDB 函数返回 #VALUE! 。
选中 E14 单元格在编辑栏中输入公式 =FINDB(D14, C14, 10) 回车,字符串长度为 9,但指定开始查找位置为 10 大于字符串长度,所以 FINDB 函数返回 #VALUE! 。
选中 E15 单元格在编辑栏中输入公式 =FINDB(D15, C15, 20) 回车,D15 为空且指定开始查找位置为 20 大于字符串长度,FINDB 函数返回字符串长度 + 1,即 9 + 1 等于 10 。
图 2-3 指定无效位置
如果大家有什么疑问和问题或建议可以在评论区留言。
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
- 控制面板
- 网站分类
- 搜索
- 最新留言
-
- 文章归档
- 友情链接
Powered By Z-BlogPHP 1.7.3
ICP证:湘ICP备2021010693号-4