ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 19488|回复: 9

[分享] 比较两个字符串 like的用法

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-12-9 19:58 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
like的用法
Like运算符可以让你比较两个字符串来判断它们是否匹配,它还支持通配符。例如,星号(*)代表一个或者多个字符,问号(?)代表单个字符,而井号(#)代表单个数字。另外,通过使用左括号和右括号([、]),你可以指定一个用来匹配的字符集合。

   下面的代码给出了几种可以使用Like运算符的方法。

If "(800) 555-5555" Like "(###) ###-####"
Then
注释:有效的电话号码
End If

If "1ABCDEF" Like "#[A-Z]*" Then
注释:有效
End If

If "1ABCDEF" Like "#[a-z]*" Then
注释:有效
End If
   Like运算符可以简化你的验证有效性逻辑并提高易读性。对比较复杂方式,它也比InStr函数易于使用。
=============================
Like 运算符
   

用来比较两个字符串。

语法

result = string Like pattern

Like 运算符的语法具有以下几个部分:

部分 描述
result 必需的;任何数值变量。
string 必需的;任何字符串表达式。
pattern 必需的;任何字符串表达式,遵循“说明”中的模式匹配约定。


说明

如果 string 与 pattern 匹配,则 result 为 True;如果不匹配,则 result 为 False。但是如果 string 或 pattern 中有一个为 Null,则 result 为 Null。

Like 运算符的特性随着 Option Compare 语句而不同。每个模块的缺省字符串比较方法是 Option Compare Binary。

在字符串比较中,Option Compare Binary 的结果是根据字符的内部二进制表示法导出的排序顺序得到的。在 Microsoft Windows 中,排序顺序由代码页决定。下例说明通常二进制的排序顺序:

A < B < E < Z < a < b < e < z < _ < _ < _ < _ < _ < ?/FONT>

在字符串比较中,Option Compare Text 的结果是字符串比较,它建立在不区分大小写的文本排序顺序基础上,而这一排序顺序是由系统的国别确定的。在对相同的字符使用 Option Compare Text 时会产生以下文本排序顺序:

(A=a) < (_=_) < (B=b) < (E=e) < (_=_) < (Z=z) < (_=_)

内建的模式匹配功能提供了多种工具来进行字符串比较。有了模式匹配功能就可以使用通配符、字符串列表或字符区间的任何组合来匹配字符串。下列表格指出 pattern 中允许的字符以及它们与什么进行匹配:

pattern 中的字符 符合 string 中的
? 任何单一字符。
* 零个或多个字符。
# 任何一个数字 (0–9)。
[charlist] charlist.中的任何单一字符。
[!charlist] 不在 charlist 中的任何单一字符。


在中括号 ([ ]) 中,可以用由一个或多个字符 (charlist) 组成的组与 string 中的任一字符进行匹配,这个组几乎包括任何一个字符代码以及数字。

注意 为了与左括号 ([)、问号 (?)、数字符号 (#) 和星号 (*) 等特殊字符进行匹配,可以将它们用方括号括起来。不能在一个组内使用右括号 (]) 与自身匹配,但在组外可以作为个别字符使用。

通过在范围的上、下限之间用连字符 (–),charlist 可以指定字符的范围。例如,如果 string 中相应字符的位置包括 A–Z 之间的任意大写字母,则 [A-Z] 得到一个匹配。不需要分界符,方括号内就可以包括多个范围。

指定范围的意义取决于运行时的有效字符排序(正如 Option Compare 和系统的国别设置所确定的,代码在运行之中)。使用 Option Compare Binary 示例可以看到,范围 [A–E] 与 A、B 和 E 相匹配。通过 Option Compare Text 可以看到,[A–E] 与 A, a, _, _, B, b, E, e 相匹配。此范围与 _ 或 _ 不匹配,因为按照排序顺序,重音字符在非重音字符之后。

下面列举的是模式匹配的其它重要规则:

charlist 开头的惊叹号 (!) 意味着,如果在 string 中找到任何不属于 charlist 的字符,则存在一个匹配。如果在方括号之外使用惊叹号,则惊叹号与自身匹配。


连字符 (–) 可以出现在 charlist 的开头(如果使用惊叹号,则在惊叹号之后),也可以出现在 charlist 的结尾与自身匹配。在任何其它地方,连字符用来识别字符的范围。


当指定了字符范围时,这些字符必须按照升序(从最小到最大)顺序来显示。[A-Z] 是有效模式,但 [Z-A] 不是。


字符序列 [] 被看作是长度为零的字符串 ("")。
某些语言的字母表中有一些特殊字符,它们表示两个分开的字符。例如,在一些语言中,当字符 "a" 与 "e" 同时出现时,用 "_" 来表示字符 "a" 与 "e"。Like 运算符可以辨认出单一的特殊字符和两个个别字符是否相等。

当一个语言使用了一个特殊字符,而且这个字符在系统地区设置中已被指定的时候,在 pattern 或 string 中出现的单一特殊字符将与其他字符串中等价的两个字符相匹配。与此相似,由方括号括起来的 pattern 中的单一特殊字符(字符本身在列表或范围内)将与 string 中等价的两个字符序列匹配。
============================
Like 运算符示例
本示例使用 Like 运算符做字符串的方式比较。

Dim MyCheck
MyCheck = "aBBBa" Like "a*a" ' 返回 True。
MyCheck = "F" Like "[A-Z]" ' 返回 True。
MyCheck = "F" Like "[!A-Z]" ' 返回 False。
MyCheck = "a2a" Like "a#a" ' 返回 True。
MyCheck = "aM5b" Like "a[L-P]#[!c-e]" ' 返回 True。
MyCheck = "BAT123khg" Like "B?T*" ' 返回 True。
MyCheck = "CAT123khg" Like "B?T*" ' 返回 False


TA的精华主题

TA的得分主题

发表于 2009-12-9 21:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢分享,学习一下!

TA的精华主题

TA的得分主题

发表于 2009-12-9 22:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢楼主分享,学习。

TA的精华主题

TA的得分主题

发表于 2010-6-4 18:21 | 显示全部楼层
好东西,大家都 来看看,谢谢LZ分享。

TA的精华主题

TA的得分主题

发表于 2011-9-28 18:09 | 显示全部楼层
配合like可以實現實踐中經常出現的包含運算。相當強大!
IF cells(1,1)like "*惊叹号*" then
.........

TA的精华主题

TA的得分主题

发表于 2012-2-11 10:43 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-7-20 11:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 ning84 于 2012-7-20 13:43 编辑

【LIKE运算符练习】将论坛ID分类
http://www.excelpx.com/thread-187325-1-1.html
http://topic.csdn.net/u/20120719/11/82bb90c4-fa77-4c46-a974-f41a28019d0b.html?seed=379433655&r=79178752#r_79178752


---------------------------------
http://technet.microsoft.com/zh-cn/swf8kaxw(v=vs.95)#

Dim testCheck As Boolean
' The following statement returns True (does "F" satisfy "F"?)
testCheck = "F" Like "F"
' The following statement returns False for Option Compare Binary
'    and True for Option Compare Text (does "F" satisfy "f"?)
testCheck = "F" Like "f"
' The following statement returns False (does "F" satisfy "FFF"?)
testCheck = "F" Like "FFF"
' The following statement returns True (does "aBBBa" have an "a" at the
'    beginning, an "a" at the end, and any number of characters in
'    between?)
testCheck = "aBBBa" Like "a*a"
' The following statement returns True (does "F" occur in the set of
'    characters from "A" through "Z"?)
testCheck = "F" Like "[A-Z]"
' The following statement returns False (does "F" NOT occur in the
'    set of characters from "A" through "Z"?)
testCheck = "F" Like "[!A-Z]"
' The following statement returns True (does "a2a" begin and end with
'    an "a" and have any single-digit number in between?)
testCheck = "a2a" Like "a#a"
' The following statement returns True (does "aM5b" begin with an "a",
'    followed by any character from the set "L" through "P", followed
'    by any single-digit number, and end with any character NOT in
'    the character set "c" through "e"?)
testCheck = "aM5b" Like "a[L-P]#[!c-e]"
' The following statement returns True (does "BAT123khg" begin with a
'    "B", followed by any single character, followed by a "T", and end
'    with zero or more characters of any type?)
testCheck = "BAT123khg" Like "B?T*"
' The following statement returns False (does "CAT123khg"?) begin with
'    a "B", followed by any single character, followed by a "T", and
'    end with zero or more characters of any type?)
testCheck = "CAT123khg" Like "B?T*"


TA的精华主题

TA的得分主题

发表于 2014-3-12 19:22 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2014-10-20 11:27 | 显示全部楼层
我正在学习LIKE比较,通过你的帖可以学习的更详细,透彻,O(∩_∩)O谢谢楼主

TA的精华主题

TA的得分主题

发表于 2014-10-21 11:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
收藏学习,谢谢分享
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-10-28 19:20 , Processed in 0.041673 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表