Table of contents
在MS Excel中,我们经常需要在数据集中搜索或查找数值。 这可能是在行或列中查找数据。 幸运的是,Excel提供了不同的函数和公式来完成这类任务。 在Excel VBA代码的帮助下,我们可以将这种搜索或查找数值的任务自动化。 在这篇文章中,我们将看到不同的方法来 在一列中查找值 在Excel VBA中。
下载实践工作手册
查找列中的值.xlsm在Excel中用VBA查找列的值的6个例子
让我们有一个产品信息的数据集,其中有它们的 产品ID , 品牌 , 模型 , 单位价格 ,以及 订单编号 我们的任务是找出匹配的 订单编号 现在我们的任务是找出 订单编号 与之相关的 产品ID .
1.使用VBA查找功能查找列中的值
在第一个例子中,我们将使用 VBA中的查找功能 来寻找一个列中的值。
📌 步骤。
- 转到工作表底部的工作表名称。
- 按下鼠标的右键。
- 选择 查看代码 列表中的选项。
- 打开VBA窗口,然后选择 模块 从 插入 选择
- 现在在VBA控制台写下以下代码
Sub Find_Value() Dim ProductID As Range("D4").ClearContents Set ProductID = Range("B8:B19").Find(What:=Range("C4").Value, _ LookIn:=xlValues, LookAt:=xlWhole) If Not ProductID Is Nothing Then Range("E5").Value = ProductID.Offset(, 4).Value Else MsgBox "没有找到匹配的数据!!" End If End Sub
- 现在在数据集中插入一个按钮。
- 转到 开发商 标签。
- 选择 钮扣 ( 形式控制 ) 从 插入 节。
- 给予按钮的任何名称。 例如,我给它命名为 搜索 .
- 将代码分配给这个按钮。
- 选择按钮并按下鼠标的右键。
- 选择 指派宏程序 从列表中。
- 选择所需的宏,从 指派宏程序 窗口。
- 然后,按 认可 .
- 现在写下任何 产品ID 并点击 搜索 按钮。
我们可以看到没有匹配显示,因为这个产品编号不在列表上。
- 换个说法 产品ID 并再次按下 搜索 按钮。
我们得到所给的订单号 产品ID .
阅读更多。 如何在Excel VBA中按行和列获取单元格值
2.用VBA从不同的工作表中查找数值
在本节中,我们将对不同的工作表做上述同样的事情。 让我们假设我们的产品信息是在 钣金 2 ,而搜索框是在 第3张 现在我们将编写VBA代码,这样我们就可以使用产品ID搜索订单ID了。 第3张 .
第2张。
第三张。
📌 步骤。
- 遵循相同的步骤,从 第一步 至 第2步 从前面的方法中,打开VBA控制台
- 现在在VBA控制台写下以下代码
Sub Find_Value_from_worksheets() Dim rng As Range Dim ProductID As String Dim rownumber As Long ProductID = Sheet3.Cells(4, 3) Set rng = Sheet2.Columns("B:B").Find(What:=ProductID, _ LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, _ SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) rownumber = rng.Row Sheet3.Cells(5, 5) .Value = Sheet2.Cells(rowwnumber, 6) .Value End Sub
- 现在再次插入一个像前一个的按钮。
- 然后将宏代码分配给按钮。
- 输入任何 产品ID 并点击 执行 按钮
阅读更多。 在Excel中查询列的值并返回另一列的值
3.寻找并标记列中的值
让我们看看如何通过标记来找出某一列的值。 为此,让我们假设上面的数据集也有一个额外的列,名为 交付状态 现在我们的任务是标记出在 交付状态 栏目,这些栏目是 待定 .
📌 步骤。
- 按照同样的步骤,从 第一步 至 第2步 和前面的方法一样,打开VBA控制台
- 现在在VBA控制台写下以下代码
Sub Find_and_Mark() Dim strAddress_First As String Dim rngFind_Value As Range Dim rngSrch As Range Dim rng_Find As Range Set rng_Find = ActiveSheet.Range("G1:G16") Set rngSrch = rng_Find.Cells(rng_Find.Cells.Count) Set rngFind_Value = rng_Find.Find("Pending", rngSrch, xlValues) If Not rngFind_Value Is Nothing Then strAddress_First = rngFind_Value.Address RngFind_Value.Font.Color = vbRed Do SetrngFind_Value = rng_Find.FindNext(rngFind_Value) rngFind_Value.Font.Color = vbRed 循环直到rngFind_Value.Address = strAddress_First End If End Sub
- 现在进入工作表,运行代码。
- 请看表格中的输出。
阅读更多。 如何查找Excel列中的最高值(4种方法)
4.VBA使用通配符查找列中的值
最后,我们将看到如何使用通配符在Excel VBA中搜索或查找列中的值。 同样,我们将使用上述相同的数据集来实现这一方法。 我们的任务是使用产品的型号来查找产品价格。 我们可以输入全名或最后/第一个字符的 产品ID .
📌 步骤。
- 按照同样的步骤,从 第一步 至 第2步 和前面的方法一样,打开VBA控制台
- 现在在VBA控制台写下以下代码
Sub Find_Using_Wildcards() Set myerange = Range("B5:G16") Set ID = Range("D19") Set Price = Range("F20") Price.Value = Application.WorksheetFunction.VLookup _ ( "*" & Range("D19") & "*", myerange, 4, False) End Sub
- 再次,插入一个像前一个一样的按钮。
- 现在将宏代码分配给按钮。
- 现在输入任何部分 产品ID 并按下 执行 按钮。
阅读更多。 如何查找Excel列中的最低值(6种方法)
5.Excel VBA查找列中的最大值
在这里,我们想用VBA代码找到一列的最大值。
📌 步骤。
- 我们想找出最高价格。
- 现在,把下面的VBA代码放在一个新模块上。
Sub Column_Max() Dim range_1 As Range Set range_1 = Application.InputBox(提示:="选择范围", Type:=8) Max_Column = WorksheetFunction.Max(range_1) MsgBox Max_Column End Sub
- 然后,按 F5 按钮来运行VBA代码。
- ǞǞǞ 输入 对话框出现。
- 从数据集中选择范围。
- 最后,按 认可 按钮。
我们可以看到对话框中显示的是最大值。
6.Excel VBA查找列中的最后一个值
在这里,我们想知道特定列的最后一行或单元格的值。 例如,我们想知道产品列的最后一个产品
📌 步骤。
- 输入的是 VBA 以下是该模块的代码。
Sub last_value() Dim L_Row As Long L_Row = Cells(Rows.Count, "B").End(xlUp).Row MsgBox Cells(L_Row, 2) .Value End Sub
- 然后,运行代码,按 F5 按钮。
最后的数值会显示在对话框中。
阅读更多。 如何查找Excel中某一列数值的最后出现次数(5种方法)
需要记住的事情
一些常见的错误。
- 错误。 一次一个价值。 因为 识别 方法一次只能找到一个值。
- 错误。 #NA 在 VLOOKUP 如果搜索到的值不存在于给定的数据集中,那么这个函数将返回以下结果 #NA 错误。
- Range("Cell_Number").ClearContents 部分用于清除单元格中的前一个值。 否则,需要手动删除前一个值。
总结
以上是在Excel中使用VBA代码查找列中数值的一些方法。 我已经展示了所有的方法及其各自的例子,但还可以有许多其他的迭代。 我还讨论了所用函数的基本原理。 如果你有任何其他的实现方法,那么请随时与我们分享。 访问我们的网站 ǞǞǞ 获取更多关于Excel的有趣文章。