Excel VBA查找:如何使用查找方法
如您所料,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是查看整个数据集,还是只查看选定的部分。它可以有两个值:xlWhole和xlPart
语法:表达式(: = " x ",后:= ActiveCell:原地= xlFormulas,看看人家:= xlPart)
5.SearchOrder(可选):你可以选择告诉Excel是按行搜索还是按列搜索。xlByRows或xlByColumns
语法:表达式.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宏的技巧是什么?和我们一起分享吧!