【问题标题】:In excel, how to do a vlookup where the table array has only part of the lookup value在excel中,如何在表格数组只有部分查找值的情况下进行vlookup
【发布时间】:2017-01-26 01:28:06
【问题描述】:

如果这些是我的查找值:

Red donkey
Blue donkey
Green sheep
Red sheep

这些是我的表格数组中第一列的值:

donkey
sheep

如何让我的 vlookup 看到驴或羊在我的查找值中?迄今为止我最好的尝试:

=IF(ISNUMBER(SEARCH(Sheet2!$E,K2)),vlookup(K2,Sheet2!$E$1:$F$5,2,FALSE),0)

【问题讨论】:

  • 为什么不将 vlookup 设置为近似匹配? =IFERROR(VLOOKUP(K2,$E$1:$F$5,2,TRUE),"")
  • 我从未在近似匹配方面取得过成功。我总是得到一些不准确的结果,在这种情况下我也是。
  • 不是一个答案,所以不提供它,但也许这个链接可能有用:microsoft.com/en-gb/download/details.aspx?id=15011
  • 我有模糊查找加载项。虽然它可能很有用,但我正在从事的项目有一天可能会被 IRS 审计,所以我希望它是准确的。

标签: excel vlookup


【解决方案1】:

从一些疯狂的谷歌搜索中看不出有一个优雅的内置解决方案来匹配一个范围(1:1 单元格检查很容易)。

我编写了一个基本函数,您可以根据需要进行调整:

Public Function FuzzyMatch(ValueToFind As String, rng As Range)
Dim var As Variant
For Each var In rng
    If InStr(1, StrConv(var.Value, vbUpperCase), StrConv(ValueToFind, vbUpperCase)) > 0 Then
        FuzzyMatch = var.Address
        Exit Function
    End If
Next var
FuzzyMatch = "Not Found"
End Function

在这种情况下的用法是:

=FuzzyMatch(K2,Sheet2!$E$1:$F$5)

它当前返回单元格地址(例如用于间接),但您可以更改以下行:

FuzzyMatch = var.Address

到 var.value、var.row、var.column 等

【讨论】:

  • 我收到一条错误消息,指出“名称不明确:FuzzyMatch”。当我开始输入函数时,我看到自动填充填充为“FuzzyMatch”,所以我不确定问题出在哪里。
  • 我这边没有这样的错误,请检查您没有任何其他名为“FuzzyMatch”的子、函数或模块
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-16
  • 2012-12-04
  • 1970-01-01
  • 2016-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多