VBA查找功能|如何使用VBA查找功能? (例子)

Excel VBA查找

当我们在正常工作表中使用“查找”时,我们按键盘快捷键CTRL + F并键入我们需要查找的数据,如果不需要的值我们转到下一个匹配项,如果有很多此类匹配项,则是一项繁琐的任务,但是当我们在VBA中使用FIND,它为我们完成任务并为我们提供精确匹配,它需要三个参数,一个是要查找的内容,在哪里查找和在哪里查看。

在转向VBA并开始在宏中使用查找功能之前,我们需要首先学习什么是excel中的查找功能。在普通Excel中,在“编辑”组下的“主页”选项卡中,我们可以找到一个查找功能,该功能用于在单元格区域或整个工作表中查找字符串或值。

当我们点击它时,我们有两个选择;

一个很容易找到,

我们可以看到它还有一个选项模式,可以打开另一个功能。

它执行具有四个约束的查找算法,即“查找内容”,“内部查找”,“搜索”和“查找”。

excel中的第二个选项是“查找并替换”,当我们找到一个字符串时会使用它,但是用其他任何值替换它时,

查找功能语法

上面我们已经学习了基本Excel中的“查找”。在VBA中,我们手动编写代码,但功能与普通excel相同。首先,让我们看一下语法。

Expression.Find(What,lookin,....)

如果使用excel函数找到了我们要查找的值,它将返回该值所在的单元格;如果找不到该值,则该函数的对象将设置为空。

宏中的表达式是定义的范围,例如范围1或范围2。什么是我们要搜索特定值的关键字? Lookin是我们要搜索的关键字,它是注释,公式或字符串。同样,Find函数中还有其他可选约束。唯一必需的字段是我们要搜索的值。

基本上,VBA发现Excel具有一个必需的参数,即我们要搜索的值。其余约束是可选的,并且find函数中有许多约束。查找功能类似于excel中的查找功能。

查找功能的参数是单元格的范围。就像我们要在哪个范围中找到一个值。它可以是几列或几个单元格,也可以是整个工作表。

例子

您可以在此处下载此VBA FIND功能Excel模板– VBA FIND功能Excel模板

范例#1

假设我们的数据具有以下值

我们将尝试在同一数据中找到“亚兰”。

  • 要编写VBA代码,必须在excel中启用“开发人员”标签,以便能够编写VBA代码。

  • 我们通过编写以下代码开始编写代码,如下所示,
子样本()

昏暗的FindS作为字符串

昏暗范围

FindS = InputBox(“输入要搜索的值”)

带表(“ Sheet1”)。范围(“ A:A”)

  • 该示例是赋予子函数的函数名称。
  • Find是我们希望我们要输入的用户进行搜索的字符串。
  • Rng是我们对该范围采用的变量。
  • 现在,我们要求用户输入如下屏幕截图所示的值,

  • 现在,我们将在模块中定义find函数。

  • 该函数查找用户在给定范围内输入的值。
  • 现在,我们通过以下参数关闭该函数。

  • 现在,如果我们首先运行我们的代码,它将要求用户提示输入值。

  • 代码完成后,它会将单元格返回到找到数据的位置。

范例#2

在上面的示例中,有四个唯一名称,但是如果数据中有多个名称(例如考虑以下数据),该怎么办?

我们可以看到,在以上数据中,名称Aran重复了两次。如果excel必须找到名称Aran,它将在A2单元格中找到它并停止,但是还有另一个与A6单元格中的A2相似的值。如何获取该价值?这是帮助中Find(What,After)的语法。

在定义单元格之后,我们要在该单元格后面搜索数据。

让我们为上述数据编写代码。

  • 始终记得从选项中启用开发人员选项卡,然后从excel中启用自定义功能区,以便能够在VBA中编写代码。
  • 在VBA中,我们获得了Microsoft excel对象,这是我们编写代码的模块。

  • 以前我们在工作表1上工作,现在我们在工作表2上工作,因此为另一个模块选择工作表2并显示空白页面。

  • 现在,首先将函数定义为SUB Sample2(),然后按Enter键,开始编写代码。

  • 现在我们已经定义了函数,我们将开始进入定义变量的主要部分。

  • 定义“查找”变量应具有的内容,

  • 选择我们正在处理的工作表,在此示例中为工作表2,

  • 现在,无论用户在A2单元格后输入什么内容,我们都将查找文本,因此我们如下定义了find函数,

  • 现在,我们以with和if条件结束来关闭代码。

上面的代码所做的是在单元格A2之后搜索字符串,并在找到该单元格的地方返回该单元格。

要记住的事情

  1. 首先,我们需要启用开发人员标签才能使用VBA。
  2. 我们需要找到什么具体值?
  3. 如果找不到该值,则该函数的对象将设置为nothing。