Table of contents
今天,我们将学习如何使用 VLOOKUP 来搜索 模糊匹配 在Excel中。
在处理较大的数据集时,我们经常试图过滤掉类似的值。 这些匹配类型之一被称为 模糊匹配 ,其中的数值并不完全相同,但仍根据其相似性进行匹配。
那么,让我们讨论一下你如何使用 VBA VLOOKUP 功能 的Excel进行搜索 模糊匹配 .
模糊匹配简介
A 模糊匹配 是一个类型的 部分匹配。
在这些类型的匹配中,一个文本与另一个文本并不完全匹配。 但文本的重要部分与另一个文本确实匹配。
在给定的例子中,该书 "世界大战期间的印度历史" 包含三个重要部分。 历史 , 印度 ,以及 世界大战 .
因此,所有包含其中一个或多个部分的书籍都会模糊地与该书相匹配。
所以,模糊的匹配是。
- 第二次世界大战的历史
- 古希腊的历史
- 世界大战:原因和影响
- 印度河文明:一部古代史
- 印度赢得了自由
- 阿道夫-希特勒:世界大战之前和之后
- 印度的发现
下载实践工作手册
VLOOKUP 模糊匹配.xlsmExcel中VLOOKUP模糊匹配的3种方法
这里我们有一个数据集,其中有 名称 的一些书籍的一个书店,叫。
我们今天的目标是利用 VLOOKUP Excel的函数生成一些 模糊匹配 让我们讨论一下三种不同的方法。
1.使用通配符的VLOOKUP模糊匹配(整个Lookup_Value的匹配)。
- 首先,我们将使用通配符生成一些模糊的匹配,即 星号 (*) 但请记住,你必须要与整个 查找_值 在这个方法中,不是单独的部分的 查找_值 .
例如,我们可以找到一本书,其中包含的文字是 "第二次世界大战" 以这种方式。
只有拥有完整文本的书籍 "第二次世界大战" 将会匹配。
这个公式很简单,把一个 星号 (*) 符号在两端的 查找_值 文本。
该公式将是。
=VLOOKUP("*第二次世界大战*",B5:B22,1,FALSE)
- 你也可以用一个单元格引用来代替原始文本。 使用 安培数(&) 符号,将它们合并成一个文本。 像这样。
=VLOOKUP("*"&D5&"*",B5:B22,1,FALSE)
要了解更多关于 VLOOKUP 使用通配符,请访问 本条 .
阅读更多。 如何在Excel中用通配符执行VLOOKUP (2种方法)
2.使用VBA的模糊匹配
上一节中的方法部分地满足了我们的目的,但并没有完全达到。
现在我们将用一个公式推导出一个 VBA代码 这将几乎完全实现我们的目的。
- 起初,打开一个 VBA 窗口,并插入以下内容 VBA 在一个新模块中的代码。
编码 :
Function FUZZYMATCH(str As String, rng As Range) str = LCase(str) Dim Remove_1(5) As Variant Remove_1(0) = "," Remove_1(1) = "." Remove_1(2) = ":" Remove_1(3) = "-" Remove_1(4) = "; " Remove_1(5) = "? Dim Rem_Str_1 As String Rem_Str_1 = str Dim rem_count_1 As Variant For Each rem_count_1 In Remove_1 Rem_Str_1 = Replace(Rem_Str_1, rem_count_1, "" ) Next rem_count_1 Words = Split(Rem_Str_1) Dim i AsVariant For i = 0 To UBound(Words) If Len(Words(i)) = 1 Or Len(Words(i)) = 2 Then Words(i) = Replace(Words(i), Words(i), " bt ") End If Next i Dim Final_Remove(26) As Variant Final_Remove(0) = "the" Final_Remove(1) = "and" Final_Remove(2) = "but" Final_Remove(3) = "with" Final_Remove(4) = "to" Final_Remove(5) = "before" Final_Remove(6) = "after" Final_Remove(7) = "beyond" Final_Remove(8) ="Final_Remove(9) = "there" Final_Remove(10) = "his" Final_Remove(11) = "her" Final_Remove(12) = "him" Final_Remove(13) = "can" Final_Remove(14) = "could" Final_Remove(15) = "may" Final_Remove(16) = "might" Final_Remove(17) = "should" Final_Remove(18) = "should" Final_Remove(19) = "will" Final_Remove(20) = "would" Final_Remove(21) = "this" Final_Remove(22) = "that" Final_Remove(23) = "have"Final_Remove(24) = "已" Final_Remove(25) = "已" Final_Remove(26) = "期间" Dim w As Variant Dim ww As Variant For w = 0 To UBound(Words) For Each ww In Final_Remove If Words(w) = ww Then Words(w) = Replace(Words(w), Words(w), " bt " ) Exit For ' End If Next ww Next w Dim Lookup As Variant Dim x As Integer x = rng.Rows.count ReDim Lookup(x - 1) Dim j as Variant j = 0 Dim k As Variant For Each kIn rng Lookup(j) = k j = j + 1 Next k Dim Lower As Variant ReDim Lower(UBound(Lookup)) Dim u As Variant For u = 0 To UBound(Lookup) Lower(u) = LCase(Lookup(u)) Next u Dim out As Variant ReDim out(UBound(Lookup), 0) Dim count As Integer co = 0 mark = 0 Dim m As Variant For m = 0 To UBound(Lower) Dim n As Variant For Each n In Words Dim o As Variant For o = 1 To Len(Lower(m) ) If Mid(Lower(m), o,Len(n)) = n 然后 out(co, 0) = Lookup(m) co = co + 1 mark = mark + 1 Exit For End If Next o If mark> 0 Then Exit For End If Next n mark = 0 Next m Dim output As Variant ReDim output(co - 1, 0) Dim z As Variant For z = 0 To co - 1 output(z, 0) = out(z, 0) Next z FuZZYMATCH = output End Function
这段代码建立了一个名为 福兹玛特 .
- 现在,将其保存为 本条方法3的步骤 .
这个 福兹玛特 函数查出所有 模糊的匹配 的一个 查询值 直接。
ǞǞǞ 语法 这的 福兹玛特 功能是。
=FUZZYMATCH(lookup_value,lookup_range)
为了找出 模糊匹配 本书的 "世界大战期间的印度历史" ,输入这个 查找_值 在一个单元格( D5 在这个例子中)并在另一个单元格中输入这个公式。
=fuzzymatch(d5,b5:b22)
你看,我们已经发现了书中所有的模糊匹配。 "世界大战期间的印度历史"
- 这里 D5 的单元格引用。 lookup_value ("The History of India during the World War").
- B5:B22 是指 查找_范围 .
让我们找出 模糊匹配 的另一本书,名为 "大城市犯罪背后的原因笔记本" .
输入这个 查找_值 在一个单元格( D5 在这个例子中)并在另一个单元格中输入这个公式。
=fuzzymatch(d5,b5:b22)
💡 公式的解释
- ǞǞǞ 福兹玛特 函数是我们在 VBA 它需要一个名为 查找_值 和一个名为的单元格范围 查找_范围 并返回一个包含所有 模糊的匹配 的字符串。
- 因此 模糊匹配(d5,b5:b22) 返回一个包含所有 模糊匹配 的字符串在单元格 D5 从范围上看 B5:B22 .
阅读更多。 如何在Excel中VLOOKUP部分文本(含替代方法)
类似的读物
- VLOOKUP不工作(8个原因& 解决方案)
- INDEX MATCH与VLOOKUP功能的对比(9个例子)
- 在Excel中使用多条件的VLOOKUP(6种方法+替代方法)
- Excel VLOOKUP垂直返回多个数值
- VLOOKUP和返回Excel中的所有匹配信息(7种方法)
3.使用Excel的模糊查询插件进行模糊匹配
微软Excel提供了一个 附加元件 使用它,你可以将两张表匹配为 模糊查询 .
- 首先,下载并安装 附加元件 从这个 链接 .
- 在成功下载和安装后,你会发现模糊查询插件在你的Excel工具条上。
- 然后将数据集排列成两个你想要匹配的表格。
- 在这里,我有两个表格,包含来自两个书店的两份书单,叫做 罗伯特书店 和 马丁书店 .
- 接下来,到 虚虚实实 查询 tab> 点击 模糊查询 在Excel工具条上的工具。
- 因此,你会得到一个 模糊查询 在你的工作簿的侧板上创建的表格。
在 左边的桌子 和 右边的桌子 选项,选择两个表的名称。
在这个例子中,选择 罗伯特 和 马丁 .
然后在 专栏 部分,选择每个表的列的名称。
在 匹配专栏 部分,选择你想要的两列之间的匹配类型。 对于 模糊的匹配。 选择 默认情况下 .
- 最后,点击 进展 你将在一个新的表格中得到各表的匹配比例。
阅读更多。 VLOOKUP比较Excel中的两个列表(2种或多种方式)
总结
使用这些方法,你可以用 VLOOKUP 功能 的Excel进行搜索 模糊的匹配。 虽然这些方法不是100%有效,但仍然非常有用。 你有任何问题吗? 欢迎在评论框中提问。 如果你有更好的方法,别忘了分享。 请保持联系 ǞǞǞ .