Excel VBA:InStr或Find中哪个更快?

Excel VBA:InStr或Find中哪个更快?,excel,vba,function,Excel,Vba,Function,我有一个函数,它使用InStr()来定位字符串中的一个字符,但我知道Excel中有一个名为FIND()的内置函数。谁能告诉我哪个更快或更高效 hours_position = InStr(1, value, " ") vs 两者都是一样的,它做同样的动作 大多数(但不是全部)工作表函数也可以从VBA调用。例如,您可以通过调用Application.WorksheetFunction.VLOOKUP(或Application.VLOOKUP),在VBA中使用VLOOKUP工作表函数 同样,您可以

我有一个函数,它使用InStr()来定位字符串中的一个字符,但我知道Excel中有一个名为FIND()的内置函数。谁能告诉我哪个更快或更高效

hours_position = InStr(1, value, " ")
vs


两者都是一样的,它做同样的动作

大多数(但不是全部)工作表函数也可以从VBA调用。例如,您可以通过调用
Application.WorksheetFunction.VLOOKUP
(或Application.VLOOKUP),在VBA中使用VLOOKUP工作表函数

同样,您可以使用Application.WorksheetFunction.Find和
Application.WorksheetFunction.Search
。您可以使用它们来模拟VBA代码中工作表函数的工作方式

这些函数仅在Excel VBA中可用,而InStr是一个通用VBA函数,可在所有Office应用程序(以及VB6、VB.NET等)中使用


除此之外,Excel VBA中的范围对象有一个查找方法,而工作表对象有一个查找对象。但是,它们的用途不同:您不能使用它们来搜索字符串中的文本,而是搜索具有指定内容的单元格。

两者都是相同的,它执行相同的操作

大多数(但不是全部)工作表函数也可以从VBA调用。例如,您可以通过调用
Application.WorksheetFunction.VLOOKUP
(或Application.VLOOKUP),在VBA中使用VLOOKUP工作表函数

同样,您可以使用Application.WorksheetFunction.Find和
Application.WorksheetFunction.Search
。您可以使用它们来模拟VBA代码中工作表函数的工作方式

这些函数仅在Excel VBA中可用,而InStr是一个通用VBA函数,可在所有Office应用程序(以及VB6、VB.NET等)中使用


除此之外,Excel VBA中的范围对象有一个查找方法,而工作表对象有一个查找对象。但是,它们有不同的用途:不能使用它们搜索字符串中的文本,而是搜索具有指定内容的单元格。

它们有不同的用途:
InStr()
用于在一个字符串中查找子字符串<代码>查找()用于在多个字符串中查找字符串(如在单元格中)。我使用
InStr()
将范围传输到数组,循环它们,并使用
InStr()
来创建一个更快版本的
Find()
。因此,你应该明确你的目标并衡量difference@paulbica
Find()
用于特定范围内的单元格。我是对的还是遗漏了什么?@nishitdey-
Find()
用于搜索范围内的多个单元格。如果您和OP考虑的是
FindB()
,那么也有一些方法可以测量它们之间的差异-通过使用一个大段落来查找多个子字符串,并用一个范围来测量响应。find与WorksheetFunction.find非常不同。它们有不同的用途:
InStr()
用于在一个字符串中查找子字符串<代码>查找()用于在多个字符串中查找字符串(如在单元格中)。我使用
InStr()
将范围传输到数组,循环它们,并使用
InStr()
来创建一个更快版本的
Find()
。因此,你应该明确你的目标并衡量difference@paulbica
Find()
用于特定范围内的单元格。我是对的还是遗漏了什么?@nishitdey-
Find()
用于搜索范围内的多个单元格。如果您和OP考虑的是
FindB()
,那么也有办法测量它们之间的差异-通过使用一个大段落来查找多个子字符串,并用一个范围来测量响应。find与WorksheetFunction.find非常不同。
WorksheetFunction.find
=find的作用相同(
,witch是InStr的公式版本,如果找不到,则返回#NA,而不是从InStr
工作表函数返回的0。Find
=Find(
,witch是InStr的公式版本,如果找不到,则返回#NA,而不是从InStr返回的0
hours_position = Application.WorksheetFunction.Find(" ", value, 1)