ExcelVBA之函数篇-3.16多样筛选组合任君选筛选功能从此是路人

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ExcelVBA之函数篇-3.16多样筛选组合任君选筛选功能从此是路⼈前景提要
昨天我们分享了如何通过like()函数来实现数据的筛选,可能是因为昨天忙于赶车,⽐较着急,
我看了下我好像并没有完全介绍完⼀些⽐较常⽤的功能,今天就继续来分享下like()函数在筛选
⽅⾯的强⼤功能吧。

函数说明
like()函数的筛选是⾮常强⼤的,昨天和今天的案例中的那些筛选特点,是我综合⾃⼰⽇常⼯作
中和平时帮其他同事写⼀些⼩代码的时候,总结出来的,可能并不完善,但是基本上应该够⽤
了,当⼤家知道了like()函数的这些强⼤的功能之后,可能在之后的⼯作中,会慢慢的抛弃excel
⾃⾝的筛选功能,因为很多我们需要的筛选功能,它都没有办法实现。

上代码
我们还是采⽤上节我们的案例,当然为了演⽰的效果,⾃然还是会不断的更改⼀些数据
今天我们依然来完成三个⽐较奇怪的要求
1.E-G开头,m-x结尾的数量
Sub B9000b()Dim i&For i = 2 To 16 If Cells(i, "d") Like "[E-G]*[m-x]" Then Cells(i, "d").Interior.Color =
vbYellow End IfNext iEnd Sub
效果图如上,注意我圈中的那两个了嘛?看起来⾮常的相似,并且好像也符合我们的要求,但
是为什么上⾯的被选中了,但是下⾯的去没有被选中呢?认真学习我们分享的童鞋⼀定知道,
如果不知道的话,出门右拐,看看上⼀节3.15的分享吧
2.第5位是字母的数量
这个要求似乎和上节的最后⼀个要求有点类似哦,不同的是,上节的是要求要有从第⼆位开始
往后都是数字,但是这⾥仅仅是要求第5是数字,那么如何写呢?
我们讲过“*”代表的是占位符,霸占位置的意思,⽽#也是占位符,同时他也代表数字,难道正确
的答案应该是“****#*”我们来试下
Sub B9000b()Dim i&For i = 2 To 17 If Cells(i, "d") Like "****#*" Then Cells(i, "d").Interior.Color = vbYellow
End IfNext iEnd Sub
看看结果变成什么样⼦了
这个结果似乎有点出乎我们的意料之外,我们仅仅是想要得到第5位是数字的订单号,但是我们
来看看结果,全部都选中了,只有⼀个没有数字的纯英⽂的订单号没有被选中,⽽选中的结果
中,有些完全不符合我们的要求,⽐⽅说test上⾯2个,G200Ax,第5位并不是数字,这是⼀个问
号,这很明显不符合我们的要求,证明我们的写法存在错误,为什么会这样呢?
这⾥要解释下,"*"他虽然是霸位的那个,你可以理解不管他是霸占⼀个位置也好,霸占5个位置
也好,他都叫霸占,俺么再程序上就理解,他⾄少霸占了⼀个,那么看看我们的数据,⾄少霸
占了⼀个,那就是第⼀位,从第⼀位开始,第⼆位是数字的有哪些?是不是剩下的都是属于这
种情况呢?所以结果才会出现这样⼤的偏差,那么我们要怎么处理呢?
今天在分享⼀个新的知识点,那就是另外⼀个特殊符号"?",他也算是占位符,但是他就属于⽐较
⽼实⼀点的那种霸位的⼈,他⼀次只霸占⼀个位置,那么就是说⼀个"?"就代表了⼀个位置的意
思了,那么既然第5位是数据,那么我只需要填上4个?+⼀个#,也就是这样的格式"#*?",
我们再代码中验证下
Sub B9000b()Dim i&For i = 2 To 17 If Cells(i, "d") Like "#*?" Then Cells(i, "d").Interior.Color = vbYellow End IfNext iEnd Sub
虽然结果还是很多,但是你看看是不是都符合要求了,第5位数都是数字,不是数字的,都没有被选中,是不是很完美呢?
3.包含?号的数量和
既然我们前⾯讲到了"?"的⽤法,那么不可避免的就会牵扯到⼀个问题,如果我们要筛选的数据,刚好⾥⾯就有?,⽽且?⼜正好是我们的参考标注呢,你不要说不可能,我换个场景,假设你再处理从⽹络中爬取的数据的时候,有些字符因为编码的问题,你爬出来的数据可能含有各种乱七⼋糟的符号,其中就有可能有?,某⼀些英⽂都转化成为了?,那么你要怎么办呢?
Sub B9000b()Dim i&For i = 2 To 19 If Cells(i, "d") Like "*[?]*" Then Cells(i, "d").Interior.Color = vbYellow End IfNext iEnd Sub
成功的将含有?的数据找了出来,你会看到含有*。

#的数据,那么这些要如何实现呢,当成⼀个⼩练习,⼤家模拟着上⾯的代码就可以实现了。

相关文档
最新文档