Table of contents
如果你正在寻找一些最简单的方法来找到一个完全匹配的使用 VBA 因此,让我们开始阅读这篇文章,了解寻找完全匹配的方法。
下载工作手册
VBA查找精确匹配.xlsm使用VBA查找完全匹配的5种方法
我使用了以下表格,其中有一些学生的成绩记录。 我将在此表格的帮助下解释不同的方法,以找到精确的匹配。 VBA。
为此,我使用了Microsoft Excel 365版本,你可以根据自己的方便使用任何其他版本。
方法一:在一个单元格范围内寻找完全匹配的结果
如果你想找到一个完全匹配的字符串,如一个学生的名字,然后找到这个学生的单元格位置,那么你可以按照这个方法来做。
在这里,我将找到一个完全匹配的学生,名为 "Joseph Micahel" .
步骤-01 :
转到 开发商 标签>>。 视觉基础 选项
然后,在 Visual Basic编辑器 将打开。
转到 插入 标签>>。 模块 选项
在这之后,一个 模块 将被创建。
步骤-02 :
➤ 写出以下代码
Sub searchtxt() Dim rng As Range Dim str As String Set rng = Sheets("exact match").Range("B5:B10").Find("Joseph Michael", LookIn:=xlValues) If Not rng Is Nothing Then str = rng.Address MsgBox (rng & " in " & str) End If END Sub
在这里。 "完全匹配" 是工作表的名称,而 "B5:B10" 是学生的姓名范围,和 "约瑟夫-迈克尔" 是要查出的学生的名字。
rng 被声明为一个范围对象,并且 弦外之音 作为一个字符串变量来存储搜索到的项目的地址。
ǞǞǞ 基金会 语句将把项目的地址分配给 弦外之音 变量。
➤按 F5
结果 :
之后,你将得到以下内容 信息箱 包含学生的单元格位置,名为 "约瑟夫-迈克尔" .
阅读更多。 在Excel中用VBA在一个范围内查找:包括精确和部分匹配
方法-2:使用VBA找到完全匹配的内容并将其替换掉
我将告诉你如何找到指定学生的名字,然后用另一个名字替换,因为不知何故,这个名字被写在这里。 你可以 找到你想要的字符串并替换它 遵循这个方法。
步骤-01 :
➤关注 步骤-01 的 方法一
Sub FindandReplace() Dim rng As Range Dim str As String With Worksheets("find&replace").Range("B5:B10") Set rng = .Find("Donald Paul", LookIn:=xlValues) If Not rng Is Nothing Then str = rng.Address Do rng.Value = Replace(rng.Value, "Donald Paul", "Henry Jackson") Set rng = .FindNext(rng) Loop while Not rng Is Nothing End If End With End Sub
在这里。 "查找&替换" 是工作表的名称,而 "B5:B10" 是学生的姓名范围,和 "唐纳德-保罗" 是要找出的学生的名字,然后是 "亨利-杰克逊" 将是学生的名字,而不是以前的名字。
与 语句将避免在每个语句中重复这段代码。
ǞǞǞ 基金会 语句将把项目的地址分配给 弦外之音 变量和 哆啦A梦 循环将替换所有出现的搜索词。
➤按 F5
结果 :
之后,你会得到新学生的名字为 "亨利-杰克逊" .
方法-3:寻找精确匹配和区分大小写的匹配
如果你想找到一个区分大小写的匹配,那么就按照这个方法。 这里,我有两个相似的名字,但在大小写上有区别,根据大小写,我将替换最后一个学生的名字。
步骤-01 :
➤关注 步骤-01 的 方法一
Sub exactmatch() Dim rng As Range Dim str As String With Worksheets("case-sensitive").Range("B5:B10") Set rng = .Find("Donald Paul", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True) If Not rng Is Nothing Then str = rng.Address Do rng.Value = Replace(rng.Value, "Donald Paul", "Henry Jackson" ) Set rng = .FindNext(rng) Loop While Not rng Is Nothing End If END With 结束子
在这里。 "大小写敏感" 是工作表的名称,而 "B5:B10" 是学生的姓名范围,和 "唐纳德-保罗" 是要找出的学生的名字,然后是 "亨利-杰克逊" 将是学生的名字,而不是以前的名字。
与 语句将避免在每个语句中重复这段代码。
ǞǞǞ 基金会 语句将把项目的地址分配给 弦外之音 变量和 哆啦A梦 循环将替换所有出现的搜索词。
➤按 F5
结果 :
现在,根据该案,该学生的名字将被改成 "亨利-杰克逊" .
类似的阅读。
- 如何在Excel中使用VBA查找单元格中的字符串(2种方法)
- VBA在Excel中查找列的方法(7种方法)
- 如何在Excel中用VBA查找字符串(8个例子)
方法四:使用InStr函数
假设,你想匹配 通过 或 不对应 到学生的名字,取决于 结果栏 其中 通过 或 失败 要想在这个字符串中找到 结果栏 并写下 "通过" 在 状态栏 对于已经通过考试的学生,你可以用 InStr函数 .
步骤-01 :
➤关注 步骤-01 的 方法一
Sub Checkstring() Dim cell As Range For Each cell In Range("C5:C10") If InStr(cell.Value, "Pass")> 0 Then cell.Offset(0, 1).Value = " Passed" Else cell.Offset(0, 1).Value = " " End If Next cell End Sub
这里,单元格范围是 C5:C10 这就是 结果栏
InStr(cell. value, "Pass")> 0 是指数字大于零的情况(当单元格中含有 "通过" ),那么下面一行将继续进行,并在相邻的单元格中给出输出结果为 通过 .
如果条件变成假的,意味着一个单元格不包含任何 "通过" 那么,下面的线 ELSE 将执行,并在相邻的单元格中给出输出值为 空白 .
这个循环将对每个单元格继续进行。
➤按 F5
结果 :
然后,你会得到 "通过" 已通过的学生的地位。
方法五:寻找精确匹配并提取数据
如果你想提取一个名为 "A "的学生的相应数据 "迈克尔-詹姆斯" 那么你可以按照这个方法。
步骤-01 :
➤关注 步骤-01 的 方法一
Sub Extractdata() Dim lastusedrow As Long Dim i As Integer, icount As Integer lastusedrow = ActiveSheet.Range("B100").End(xlUp).Row For i = 1 To lastusedrow If InStr(1, Range("B" & i), "Michael James" )> 0 Then icount = icount + 1 Range("E" & icount & ":G" & icount) = Range("B" & i & ":D" & i) .Value End If Next i END Sub
在这里,我使用了 B100 作为 活跃板块范围 (你可以根据你的用途使用任何范围)。
InStr(1, Range("B" & i), "Michael James" )> 0 是检查列中的单元格是否为 B 包含 迈克尔-詹姆斯 .
Range("E" & icount & ":G" & icount) 是你希望输出数据的范围,而 Range("B" & i & ":D" & i).value 将给出列中的值 B 至 D .
➤按 F5
结果 :
之后,你会得到以下提取的有名字的学生的数据 迈克尔-詹姆斯 .
练习部分
为了方便自己的练习,我们提供了一个 实践 的工作表中,像下面这样,在一个名为 实践 .请你自己去做。
总结
在这篇文章中,我试图介绍使用最简单的方法来寻找完全匹配的数据。 VBA 希望你会发现它很有用。 如果你有任何建议或问题,欢迎与我们分享。