excelvbafind如您所料,Excel的“查找”方法可以帮助您在电子表格中查找数据。理论上,它的工作方式与使用循环相同,但效率更高。我们通常使用Find方法在一个范围内搜索数据位,然后对其进行提取或操作。这种方法在有大量分散数据的大型电子表格中特别有用。

在本教程中,我们将学习Find方法,它是如何工作的,它的应用程序和一些示例。关于Find方法和其他高级VBA应用程序的更多细节,请看下面的内容在Excel中使用Visual Basic的在线课程

什么是寻找方法?

在工作表中查找数据的传统方法是使用循环。这种方法虽然有效,但非常耗时和低效,特别是在大数据集中。这种循环的本质意味着Excel必须重复处理相同的数据以找到所需的信息。

Find方法能更有效地实现类似的目标。由于它是专为搜索数据而设计的特定函数,因此它完全跳过了循环部分。此外,它还提供了对查找数据的内容和位置的大量控制。最终的结果是一个非常优越的搜索方法,它使根据许多不同的参数搜索数据成为可能。

语法

Find方法可以写成这样:

找到(什么,之后,LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)

这看起来很复杂!

让我们把它分成更小的部分:

1什么(必需):唯一需要的参数,什么告诉Excel到底要找什么。这可以是任何东西-字符串,整数,等等)。

语法: expression.Find (: = " x ")

2.后(可选):指定单元格这就是搜索的开始。这必须始终是一个单一单元格;这里不能用范围。如果参数,则搜索将从单元格范围的左上角开始。

语法:表达式(: = " x ",后:= ActiveCell)

这里,我们使用了' ActiveCell '作为我们的起始单元格,尽管您也可以指定一个特定的单元格。

Excel编程新手?这门课会教你为商业专业人士编写Excel程序

3."(可选):这告诉Excel要查看的数据类型,比如xlFormulas。

语法:表达式(: = " x ",后:= ActiveCell:原地= xlFormulas)

4.看看人家(可选):这告诉Excel是查看整个数据集,还是只查看选定的部分。它可以有两个值:xlWholexlPart

语法:表达式(: = " x ",后:= ActiveCell:原地= xlFormulas,看看人家:= xlPart)

5.SearchOrder(可选):你可以选择告诉Excel是按行搜索还是按列搜索。xlByRowsxlByColumns

语法:表达式.Find(What:= " x ", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows)

6.SearchDirection(可选):用于指定Excel是搜索下一个匹配值还是前一个匹配值。你可以使用任何一种xlNext(搜索下一个匹配项)或xlPrevious(搜索以前的匹配)。

语法:表达式.Find(What:= " x ", After:=ActiveCell, LookIn:xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchOrder:=xlByRows,SearchDirection: = xlNext)

7.MatchCase(可选):自解释的;这告诉Excel在做搜索时是否应该匹配大小写。默认值为假的。

语法:表达式.Find(What:= " x ", After:=ActiveCell, LookIn:xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,MatchCase: = True)

8.匹配字节数(可选):如果安装了双类型字符集,则使用(DBCS)。理解DBCS超出了本教程的范围。像MatchCase一样,它也可以有两个值:True或False,默认为False。

语法:表达式.Find(What:= " x ", After:=ActiveCell, LookAt:= xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True,MarchByte: = False)

如果你使用Excel的内置查找和替换函数(CTRL + F)记录宏,MatchByte参数通常不是查找范围的一部分。

9.SearchFormat(可选):选择具有指定属性的单元格时使用。它与FindFormat属性一起使用。例如,您有一个单元格列表,其中一个特定的单元格(或单元格范围)是斜体的。您可以使用FindFormat属性并将其设置为斜体。如果您稍后在Find中使用SearchFormat参数,它将选择斜体单元格。

SearchFormat可以有两个值:True和False。默认是假的。

语法:表达式.Find(What:= " x ", After:=ActiveCell, LookIn:xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True, MarchByte:=False, SearchFormat:=False)

找到方法示例:

假设我们有一个电子表格,其中第一列是一个等差数列:

1,4,7,10,13,16,19 ....

填充A1 ~ A65000整列。我们希望在这个进程中找到一个特定的值,比如24652。

为此,我们可以输入以下公式:

细胞。找到(什么:="24652", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
SearchFormat: = False)。激活

它立即找到我们需要的单元格- A8218运行宏:

为了便于说明,我们输入了上面所有的参数。在实际的公式中,您可以只使用要搜索的值(“What:=”)。

而不是使用“Cells”。在开始的时候,你也可以指定一个特定的范围。

要了解不同的搜索选项对Find方法语法的影响,可以尝试用Excel内置的Find函数(CTRL + F)记录宏。

你也可以用。FindNext和。FindPrevious搜索下一个/之前的匹配值。请记住,当您使用查找方法一次,Excel存储您输入的所有参数(' SearchFormat ', ' MatchCase '等)。因此,如果您将' MatchCase '设置为true一次,它在后续的搜索中也将保持为true,直到您显式地将其更改为false。

想要使用宏但讨厌编程?试试这个Excel VBA和宏的非编码方法

应用程序

在VBA程序中,您将经常使用Find方法来查找和/或替换值数据。它的主要用途是:

最重要的是,与使用循环查找数据相比,Find方法是一种更有效的替代方法。性能的提升是非常显著的——像上面使用循环的例子中所描述的那种搜索需要20-120毫秒的时间。与Find相同,它只需要不到5毫秒的时间。

如果您有使用循环的习惯,您将在find中找到一个有价值的(并且更容易使用的)盟友。如果你是Find方法和VBA编程的新手,你可以转向Excel VBA和宏课程与MrExcel

你个人最喜欢的使用Excel VBA宏的技巧是什么?和我们一起分享吧!

Excel VBA顶级课程

解锁Excel VBA和Excel宏
莱拉Gharani
4.7 (26072)
畅销书
完整的Web自动化与Excel VBA
丹尼尔强
4.7 (722)
畅销书
熟练掌握微软Excel宏和Excel VBA
凯尔尤
4.5 (11241)
畅销书
最终Excel VBA
马克Talbert
4.6 (3143)
Excel VBA编程-完整指南
鲍里斯Paskhaver
4.5 (3667)
Microsoft Excel VBA简介
凯尔尤
4.6 (1135)
Excel VBA宏:超消除歧义的Excel VBA编程
格兰特赌博
4.6 (956)
畅销书
Excel宏和Excel VBA编程初学者
Andreas Exadaktylos
4.5 (818)
评价最高
Excel VBA练习和实际项目
凯伦Tateosyan
4.5 (214)
Excel VBA报表自动化要点
本杰明Termonia
4.7 (176)
评价最高

更多Excel VBA课程

Excel VBA的学生也可以学习

让你的团队。领导行业。

使用Udemy for Business订阅在线课程库和数字学习工具。

请求一个演示