Excel中的VLOOKUP模糊匹配(3种快速方法)

  • Share This
Hugh West

今天,我们将学习如何使用 VLOOKUP 来搜索 模糊匹配 在Excel中。

在处理较大的数据集时,我们经常试图过滤掉类似的值。 这些匹配类型之一被称为 模糊匹配 ,其中的数值并不完全相同,但仍根据其相似性进行匹配。

那么,让我们讨论一下你如何使用 VBA VLOOKUP 功能 的Excel进行搜索 模糊匹配 .

模糊匹配简介

A 模糊匹配 是一个类型的 部分匹配。

在这些类型的匹配中,一个文本与另一个文本并不完全匹配。 但文本的重要部分与另一个文本确实匹配。

在给定的例子中,该书 "世界大战期间的印度历史" 包含三个重要部分。 历史 , 印度 ,以及 世界大战 .

因此,所有包含其中一个或多个部分的书籍都会模糊地与该书相匹配。

所以,模糊的匹配是。

  • 第二次世界大战的历史
  • 古希腊的历史
  • 世界大战:原因和影响
  • 印度河文明:一部古代史
  • 印度赢得了自由
  • 阿道夫-希特勒:世界大战之前和之后
  • 印度的发现

下载实践工作手册

VLOOKUP 模糊匹配.xlsm

Excel中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%有效,但仍然非常有用。 你有任何问题吗? 欢迎在评论框中提问。 如果你有更好的方法,别忘了分享。 请保持联系 ǞǞǞ .

Hugh West is a highly experienced Excel trainer and analyst with over 10 years of experience in the industry. He holds a Bachelor's degree in Accounting and Finance and a Master's degree in Business Administration. Hugh has a passion for teaching and has developed a unique teaching approach that is easy to follow and understand. His expert knowledge of Excel has helped thousands of students and professionals worldwide improve their skills and excel in their careers. Through his blog, Hugh shares his knowledge with the world, offering free Excel tutorials and online training to help individuals and businesses reach their full potential.