VBA代码解决方案第8讲:用FindPrevious进行重复搜索及利用LIKE查找

《VBA代码解决方案》(版权10028096)这套教程是我最早推出的教程,目前已经是第三版修订了。这套教程定位于入门后的提高,在学习这套教程过程中,侧重点是要理解及掌握我的“积木编程”思想。要灵活运用教程中的实例像搭积木一样把自己喜欢的代码摆好。

这套教程共三册,一百四十七讲,内容覆盖较广,也是初级和中级间的过渡教程,改版后的内容主要是提供程序源码文件及代码修正为32位和64位兼用代码。今后一段时间会给大家陆续推出。今日的内容是VBA代码解决方案第8讲:利用FindPrevious进行重复搜索及利用LIKE查找a5803ea9e2831553a1b486946fdadb58.jpeg

【分享成果,随喜正能量】笑看风云淡,坐对云起时。不争就是慈悲,不辩就是智慧,不闻就是清净,不看就是自在,原谅就是解脱,知足就是放下。。

第八讲 利用FindPrevious进行重复搜索及利用LIKE查找

在上一讲中,我讲了利用FIND方法进行单值和多值查找的方法,今日继续讲解,今日讲解FindPrevious方法进行重复搜索和利用LIKE查找的方法。

1  FindPrevious方法

语法:expression.FindPrevious(After)

FindPrevious方法和FindNext方法唯一的区别是FindPrevious方法查找匹配相同条件的前一个单元格而FindNext方法是查找匹配相同条件的下一个单元格。

如下代码:

Sub mynz_8() '8 利用FindPrevious方法进行重复搜索

 Dim rng As Range

 Dim a As Integer

   a = 1

   With Sheets("8")

     .Range("A:A").ClearContents

     bcontinue = True

     Set rng = .Range("B1:E20").Find("*a*")

        If Not rng Is Nothing Then fristmyfind = rng.Address

           Do Until rng Is Nothing Or Not bcontinue

            .Range("A" & a) = rng.Text

            a = a + 1

           Set rng = .Range("B1:E20").FindPrevious(rng)

           If rng.Address = fristmyfind Then bcontinue = False

         Loop

   End With

  End Sub

代码截图:

7b2f22782b3b5d6f1792da3a76524801.jpeg

上述代码运行后,将返回值放在A列,大家可以看一下返回的结果。

a759bba7a7b5a5bd433f1842b1fedd59.jpeg

2 用Like运算符,进行更为复杂的匹配查找

Like运算符用来比较两个字符串。

语法如下:result = string Like pattern

参数

a)string是必需的,字符串表达式。

b)pattern是必需的,字符串表达式。

c)pattern可以使用通配符、字符串列表或字符区间的任何组合来匹配字符串。下表列出pattern中允许的字符以及它们与什么进行匹配。

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

edb98a321e17e533b073509104e0b70b.jpeg

下面我们通过一个实例来讲解,先看下面的代码:

Sub mynz_8_2() '8 利用FindPrevious方法进行重复搜索和利用LIKE查找

     Dim rng As Range

     Dim a As Integer

      a = 1

      With Sheets("8")

          .Range("A:A").ClearContents

          For Each rng In .Range("B1:E20")

              If rng.Text Like "*a*" Then

                 .Range("A" & a) = rng.Text

                  a = a + 1

             End If

          Next

     End With

End Sub

代码截图:

9c48a8973b2e56714a6ddfb6d11f5ca3.jpeg

代码解读:上述过程使用For Each...Next语句和Like运算符在单元格区域B1:E20中搜索含有“a”字符的单元格,找到匹配单元格以后将单元格的值写入到A列中。

1)第6行代码使用ClearContents方法清除A列区域的数据。

2)第7行代码使用For Each...Next语句在单元格区域B1:E20中循环。

3)第8行代码使用Like运算符在单元格区域B1:E20中搜索含有“a”字符的单元格。

4)第9行代码将找到的匹配单元格的值写入到A列中。

在上一讲和本讲中,先后讲解了Find,FindNext,FindPrevious三个方法的利用,这在VBA中利用的非常广泛,尤其是Find和FindNex方法,是解决查找问题的通用的终结方法,比Excel中的LookUp方法要灵活的多,也简单的多,还希望大家在工作中真正的掌握这些方法。

b3661d7e5c642bdbee5ac01047e72cdb.jpeg

今日内容回向:

1 FIND,FINDNEXT,FINDPrevious有什么不同?

2 LIKE运算是如何进行比较的。

本讲内容参考程序文件:VBA代码解决方案(1-19).xlsm

ec51209426d369271307f97662f32e80.jpeg

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:


08f1c3dc91811bf513cf08279aae850a.jpeg

7ccf189215205bd1f4cab0dc120f8057.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/235662.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【电源专题】DC/DC电源FB分压电阻设计注意事项

在DC/DC电源中我们不可避免的会遇到FB分压电阻的取值,PCB设计等问题。如下所示随意打开一份同步降压稳压器规格书TPS56320X,规格书中的简化电路原理图就已经存在VFB管脚上的两个分压电阻。 很多工程师朋友们会误认为分压电阻只是简单的将输出电压缩小到参考电压,通过此电压来…

16.Oracle数据库Row_number() over()函数排序使用方法

1.原始数据(部分) SELECT * FROM SCOTT.EMP ; 2.使用Row_number() over() 函数,排序 SELECT EMPNO,ENAME,SAL,DEPTNO,Row_number() over( order by sal) rs FROM SCOTT.EMP ; 根据工资排序并添加序号 3.使用Row_number() over() 函数,分组并排序 SELECT EMPNO,ENAME,SAL,DEPTN…

【LeetCode】每日一题 2023_11_25 二叉树中的伪回文路径(dfs,数组/位运算)

文章目录 刷题前唠嗑题目:二叉树中的伪回文路径题目描述代码与解题思路偷看大佬题解 结语 刷题前唠嗑 LeetCode?启动!!! 这个月第一次周末早起~ 题目:二叉树中的伪回文路径 题目链接:1457. 二…

服务器500错误的解决思路

​服务器500错误是一个常见的错误代码,也就是服务器遇到了一个预料之外的错误,无法正常处理请求。这个错误通常是由于服务器配置错误、程序代码问题或者服务器资源不足等原因引起的。对于网站管理员和用户来说,服务器500错误则意味着网站无法…

Python实现FA萤火虫优化算法优化循环神经网络回归模型(LSTM回归算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 萤火虫算法(Fire-fly algorithm,FA)由剑桥大学Yang于2009年提出 , …

【LeetCode】【C++】string OJ必刷题

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 【LeetCode】415.字符串相加…

一个数据中心的PUE修养,必将迎来液冷存储的曙光

实现小于1.3的PUE硬指标,数据中心液冷存储将功不可没。 【全球存储观察 | 科技热点关注】 4000亿千瓦时,能耗如此惊人,这是预计到2030年全国数据中心的年耗电总量。 小于1.3,看似微不足道的数字,这是新建…

【神印王座】永恒之塔秘密透露,林鑫告白李馨,皓晨采儿甜蜜接吻

Hello,小伙伴们,我是拾荒君。 《神印王座》第83集如期而至,带来了令人期待已久的更新。与众多热情的观众一样,拾荒君一得到更新消息,便急不可耐地观赏起来。这一集中,龙皓晨随着月魔宫的月夜商队成功抵达联盟&#xf…

vue3使用动态component

使用场景: 多个组件通过component标签挂载在同一个组件中,通过触发时间进行动态切换。vue3与vue2用法不一样,这里有坑! 使用方法: 1.通过vue的defineAsyncComponent实现挂载组件 2.component中的is属性 父组件&am…

git-5

1.GitHub为什么会火? 2.GitHub都有哪些核心功能? 3.怎么快速淘到感兴趣的开源项目 github上面开源项目非常多,为了我们高效率的找到我们想要的资源 根据时间 不进行登录,是没有办法享受到高级搜索中的代码功能的,登录…

超详解线段树(浅显易懂,几乎涵盖所有线段树类型讲解,匠心之作,图文并茂)

一,什么是线段树? 线段树是怎样的树形结构? 线段树是一种二叉搜索树,而二叉搜索树,首先满足二叉树,即每个结点最多有两颗子树,并且是一颗搜索树,我们要知道,线段树的每个结点都存储…

记录 | onnx-simplifier安装、使用

安装: pip install onnx-simplifier# 若想加速 # [可选] 使用豆瓣源加速 pip install -i https://pypi.douban.com/simple onnx-simplifier# [可选] 使用阿里源加速 pip install -i http://mirrors.aliyun.com/pypi/simple onnx-simplifier使用: pytho…