77百科网
当前位置: 首页 生活百科

多个工作表如何找符合某条件的值(如何在单个工作表中查找某个给定值)

时间:2023-06-10 作者: 小编 阅读量: 3 栏目名: 生活百科

大家好,最近推出的内容是"VBA信息获取与处理"中的部分内容,这套教程面向中高级人员,涉及范围更广,实用性更强,现在的内容是第四个专题"EXCEL工作表数据的读取、回填和查找"的内容。参数After是可选的,表示搜索过程将从其之后开始进行的单元格,必须是区域中的单个单元格。参数MatchByte是可选的,仅在选择或安装了双字节语言支持时使用。若为True,则双字节字符仅匹配双字节字符。2)FindNext方法继续执行用Find方法启动的搜索。

大家好,最近推出的内容是"VBA信息获取与处理"中的部分内容,这套教程面向中高级人员,涉及范围更广,实用性更强,现在的内容是第四个专题"EXCEL工作表数据的读取、回填和查找"的内容。

第五节 如何在单个工作表中查找某个给定值

这个专题将的是工作表数据的操作,在前几讲中,我们讲了工作表数据和VBA直接的传输,这讲的内容仍是和工作表相关,就是如何在工作表中查找到某个值,在《VBA代码解决方案》中,我也曾经讲到过FIND方法,甚至提出这是LOOKUP函数的终结者。那么如何利用FIND方法解决问题呢?

1 Find方法和FindNext方法

1) 我们先来看看FIND方法的语法和参数:

语法:expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SerchFormat)

参数expression是必需的,该表达式返回一个Range对象。

参数What是必需的,要搜索的数据,可为字符串或任意数据类型。

参数After是可选的,表示搜索过程将从其之后开始进行的单元格,必须是区域中的单个单元格。查找时是从该单元格之后开始的,直到本方法绕回到指定的单元格时,才对其进行搜索。如果未指定本参数,搜索将从区域的左上角单元格之后开始。

参数LookIn是可选的,信息类型。xlValues对应 值;xlFormulas 对应 公式;xlComments对应 批注

参数LookAt是可选的,可为XlLookAt常量的xlWhole 或xlPart之一。

参数SearchOrder是可选的,可为XlSearchOrder常量的xlByRows或xlByColumns之一。

参数SearchDirection是可选的,搜索的方向,可为XlSearchDirection常量的xlNext或xlPrevious之一。

参数MatchCase是可选的,若为True,则进行区分大小写的查找。默认值为False。

参数MatchByte是可选的,仅在选择或安装了双字节语言支持时使用。若为True,则双字节字符仅匹配双字节字符。若为False,则双字节字符可匹配其等价的单字节字符。

参数SerchFormat是可选的,搜索的格式。

需要注意的是:每次使用Find方法后,参数LookIn、LookAt、SearchOrder 和MatchByte的设置将保存。如果下次调用Find方法时不指定这些参数的值,就使用保存的值。因此每次使用该方法时请明确设置这些参数。

2) FindNext方法继续执行用Find方法启动的搜索。查找下一个匹配相同条件的单元格并返回代表单元格的Range对象

语法:expression.FindNext(After)

参数expression是必需的,返回一个Range对象。

参数After是可选的,指定一个单元格,查找将从该单元格之后开始。

2 利用Find方法在工作表中实现单值查找

为了实现在工作表中的单值查找,我们可以利用下面的代码:

Sub MYNZI() '工作表唯一查询

Dim FJX As Variant

Sheets("Sheet5").Select

Range("i2 : I3000").ClearContents

i = 2

Do While Cells(i, "h") <> ""

Cells(i, "h").Select

UU = Cells(i, "h")

Set FJX = Sheets("Sheet5").Columns("A").Find(UU, lookat:=xlWhole)

If Not FJX Is Nothing Then

Cells(i, "i") = Sheets("Sheet5").Cells(FJX.Row, 2).Value

End If

i = i1

Loop

MsgBox ("OK")

End Sub

代码截图:

代码讲解:上述代码实现了在工作表A列中查找H列的唯一值的方案,首先我们清空了要回填的数据区域Range("i2 : I3000").ClearContents,然后利用:

Set FJX = Sheets("Sheet5").Columns("A").Find(UU, lookat:=xlWhole)

来实现我们的查找,lookat:=xlWhole 是完全匹配,当然我们还可以利用其它参数来实现特定的匹配。

上面的这段代码中我保留了工作表的名称,这样以后大家利用起来可以直接的拷贝代码,进行必要的修改即可。当然,找到唯一的值后可以提取的数据可以根据实际情况需要做进一步的改进。

我们看看程序的运行结果:

3 利用FindNext方法在工作表中实现多值查找

为了实现在工作表中的多值查找我们可以使用FindNext方法,这个方法的好处就是可以查到多个值。在查找的过程中我们要设定起始位置,下面的代码是比较经典的代码,大家可以利用

Sub MYNZJ() '工作表非唯一查询

Dim bcontinue As Boolean

Dim mysearch As Range

Dim myfind As Range

Dim fristmyfind As String

Sheets("Sheet6").Select

Range("i2 : I3000").ClearContents

i = 2

Do While Cells(i, "h") <> ""

Cells(i, "h").Select

bcontinue = True

Set mysearch = Sheets("Sheet6").Range("A1 : A" & Sheets("Sheet6").Range("A1").End(xlDown).Row)

Set myfind = mysearch.Find(what:=Cells(i, "h"), lookat:=xlWhole)

If Not myfind Is Nothing Then fristmyfind = myfind.Address

Do Until myfind Is Nothing Or Not bcontinue

Cells(i, "i") = Cells(i, "i") & " " & Sheets("Sheet6").Cells(myfind.Row, 2)

Set myfind = mysearch.FindNext(myfind)

If myfind.Address = fristmyfind Then bcontinue = False

Loop

Set myfind = Nothing

i = i1

Loop

Set mysearch = Nothing

MsgBox ("OK!")

End Sub

代码截图:

代码讲解:

上述代码实现了工作表A列中的多值查找,当在A列中存在H列的值时返回数值,注意这里的查找开始表示是fristmyfind = myfind.Address,一直循环到这个地址再次出现。

下面我们看看代码的运行结果:

利用Find和FindNext方法从而实现了工作表中的单一值查询和多值的查询。

本节知识点回向:如何实现工作表中的单一值查询?如何实现工作表中的多值查询?

本专题参考程序文件:004工作表.XLSM

VBA是利用Office实现自己小型办公自动化的有效手段,这是我对VBA的应用界定。在取代OFFICE新的办公软件没有到来之前,谁能在数据处理方面做到极致,谁就是王者。其中登峰至极的技能非VBA莫属!学习VBA是个过程,也需要经历一种枯燥的感觉,如太白诗云:众鸟高飞尽,孤云独去闲。相看两不厌,只有敬亭山。

"水善利万物而不争",绵绵密密,微则无声,巨则汹涌。学习亦如此,知道什么是自己所需要的,不要蜷缩在一小块自认为天堂的世界里,待到暮年时再去做自欺欺人的言论。要努力提高自己,用一颗充满生机的心灵,把握现在,这才是进取。越是有意义的事情,困难会越多。愿力决定始终,智慧决定成败。不管遇到什么,都是风景。看淡纷争,看轻得失。茶,满也好,少也好,不要计较;浓也好,淡也好,其中自有值得品的味道。去感悟真实的时间,静下心,多学习,积累福报。而不是天天混日子,也不是天天熬日子。在后疫情更加严峻的存量残杀世界中,为自己的生存进行知识的储备,特别是新知识的储备。学习时微而无声,利用时则巨则汹涌。

我记得20年前自己初学VBA时,那时的资料甚少,只能看源码自己琢磨,真的很难。20年过去了,为了不让学习VBA的朋友重复我之前的经历,我根据自己多年VBA实际利用经验,推出了六部VBA专门教程。

第一套:VBA代码解决方案 是VBA中各个知识点的讲解,覆盖绝大多数的VBA知识点,初学必备;

第二套:VBA数据库解决方案 数据库是数据处理的专业利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,适合中级人员的学习。

第三套:VBA数组与字典解决方案 数组和字典是VBA的精华,字典是VBA代码水平提高的有效手段,值得深入的学习,是初级及中级人员代码精进的手段。

第四套:VBA代码解决方案之视频 是专门面向初学者的视频讲解,可以快速入门,更快的掌握这门技能。

第五套:VBA中类的解读和利用 这是一部高级教程,讲解类的虚无与肉身的度化,类的利用虽然较少,但仔细的学习可以促进自己VBA理论的提高。

第六套教程:《VBA信息获取与处理》是一部高级教程,涉及范围更广,实用性更强,面向中高级人员。教程共二十个专题,包括:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪切板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。如需要可以可以WeChat: NZ9668

学习的过程也是修心的过程,修一个平静的心。在代码的世界中,心平静了,心情好了,身体自然而然就好。心静则正,内心里没有那么多邪知邪见,也就没有那么多妄想。利人就是利己。这些教程也是为帮助大家起航,助上我自己之力,我的上述教程是我多的经验的传递,大家可以根据以上资料1,3,2,6,5或者是4,3,2,6,5的顺序逐渐深入的逐渐学习。

每一分收获都是成长的记录,怎无凭,正是这种执着,成就了朝霞的灿烂。最后将一阙词送给致力于VBA学习的朋友,让大家感受一下学习过程的枯燥与执着:

浮云掠过,暗语无声,

唯有清风,惊了梦中啼莺。

望星,疏移北斗,

奈将往事雁同行。

阡陌人,昏灯明暗,

忍顾长亭。

多少VBA人,

暗夜中,悄声寻梦,盼却天明。

怎无凭!

分享成果,随喜正能量

    推荐阅读
  • 玉米馅饺子的做法(玉米饺子馅做法)

    玉米馅饺子的做法半肥瘦250克,玉米粒200克,胡萝卜一根,生葱适量,生抽适量,白糖适量,胡椒粉适量。市场买回来的玉米粒,洗干净去掉玉米衣。半肥猪肉切成小块后剁碎。把玉米粒、肉糜、胡萝卜丁、葱白装进碗里。加半勺生抽、少许盐、适量胡椒粉、花生油、少许白糖提鲜。用筷子沿着一个方向搅拌,搅拌至肉肉馅起筋即可。锅里水烧开,放饺子下锅,等到饺子浮起来就熟了,捞起来倒入汤就可以吃了。

  • 停止线超过了红绿灯怎么行驶(在路口看不清停止线)

    停止线超过了红绿灯怎么行驶?以下内容希望对你有帮助!停止线超过了红绿灯怎么行驶当我们开车经过一个有信号灯的路口,但这个路口呢,没有停止线,那红灯了停在哪里才不会越线停车呢?拍了会不会处罚呢?都是怎么做的呢?

  • 每天俯卧撑5分钟对身体有什么好处(每天坚持做俯卧撑)

    每天俯卧撑5分钟对身体有什么好处今年56岁的老李刚刚退休,整天待在家里无所事事,很是空虚,于是,老李的朋友推荐老李不妨去练练健身,既能锻炼身体,降低疾病风险,也能排解无聊且漫长的时间。这天老李在做俯卧撑的时候,突然感觉心脏有些抽痛,差点眼前一黑倒下去,赶紧坐起来缓缓,这才慢慢地恢复过来。而老李就是典型的高血压患者,通过做俯卧撑的方式来锻炼,自然是不太合适的。

  • 莱姆和柠檬的区别是什么(莱姆和柠檬的区别)

    莱姆和柠檬的区别是什么莱姆与柠檬两者味道非常接近,同一属,不同种。是两个不同的柑橘种类,果实的用途与植株生长特性相近,但莱姆的果实无籽、皮薄而较光滑,果形短椭圆,果肉淡绿色,颗粒较小。青檬和柠檬的区别是:青柠檬碧绿,表皮光滑似橘,凑近闻也香味浅淡。

  • 如何清洗毛蚶(怎么清洗毛蚶)

    如何清洗毛蚶毛蚶虽然好吃,但是清洗是十分重要的,如果不清洗干净,加上是生食的话,很容易造成细菌感染。买毛蚶时向老板要一点海盐,溶于清水中,营造海水的味儿。生吃麻蛤固然鲜美,但是卫生安全一定要注意,除了长时间的清水浸泡之外,蒜蓉也是万万不可少的,如果有酒量的还可以小酌一下,因为蒜和酒都可以起到杀菌的作用。

  • 搞笑漫画找个女朋友真是太难了(女人来大姨妈时)

    喜欢这篇漫画的朋友可以给我点个吗?关注@漫画帝国,每天推荐有意思的漫画

  • 元宵节有什么花灯名字(关于洪梅花灯的两种传说你知道吗)

    12米高“灯王"、大型主题灯组……每逢元宵佳节临近,“中国花灯之乡”东莞洪梅便变身"花灯的海洋"。19日傍晚,洪梅镇举行了赏花灯、猜灯谜等精彩文化活动,吸引了不少市民和游客前来。记者在活动现场看到,高达12米的巨型花灯分外抢眼,成为不少游客心目中的"打卡景点"。在东莞及周边地区,许多市民和游客都有每年元宵佳前后到洪梅看花灯、闹元宵的习惯。洪梅花灯是东莞市非物质文化遗产保护项目,包括长寿灯、谜语灯、

  • 我和我的工作伙伴们(我和我的小伙伴们都伙呆了)

    ——肖彦“我开学的第一个任务是破解中国课堂的第一死局——男女之间泾渭分明的座次!”……肖彦说,《社会工作概论》、《团体工作》两门专业课都是理论和实践各占一半的专业课,如何避免在枯燥的课堂上出现“老师唾沫横飞,学生蒙头大睡”的情景,成为一件难事。经过一段时间的尝试,这些学生也大方了许多。在肖彦原创漫画上所写的这段旁白,道出了这种游戏对学生的改变。如今,在肖彦的影响下,还有不少学生爱上了漫画。

  • flash能制作影片吗(Flash影片创作)

    flash能制作影片吗Flash影片是一个边缘性概念。Flash影片创作不需要摄影机、摄像机、编辑机和照明、录音等器材,其成品既不是胶片,也不是磁带,而只是web网页上的文件。创作Flash影片只需一台装有相关软件的电脑。Flash影片的创作者自称为“闪客”。Flash影片创作者不是为娱乐制造产品,而是在制造产品中娱乐。创作Flash影片首先要有创意和构思,尽可能做到故事简单、人物简单、场景简单。

  • 狂躁症的治疗方法(青春期狂躁症的治疗方法)

    电休克治疗电休克治疗是治疗狂躁症的有效方法之一,有安全、有效、迅速的特点。维持治疗狂躁症具有反复性,稍不注意就容易复发,因此对于狂躁症的患者需要一定时间的维持治疗。对于初次发病的患者锂治疗应该在狂躁症恢复后再维持6个月左右。对于每年都有发作的患者可以长期用锂盐维持,此时可用缓解剂。心理治疗狂躁症患者的治疗,除了采取普通的药物治疗,还可以通过心理辅导的方式予以辅助治疗。