改进 VLOOKUP 功能

内容

如何正确打包降落伞?

益处。 第 2 版,修订。

假设我们有以下订单表:

改进 VLOOKUP 功能

例如,我们需要知道伊万诺夫的第三笔订单数量是多少,或者彼得罗夫何时执行他的第二笔交易。 内置的 VLOOKUP 函数只能在表中搜索第一次出现的姓氏,对我们没有帮助。 诸如“谁是订单号 10256 的经理?”之类的问题。 也将无人回答,传统知识。 内置的 VLOOKUP 无法从搜索左侧的列返回值。

这两个问题都一举解决了——让我们编写自己的函数,它不仅会查找第一个,而且在一般情况下,会查找第 N 次出现。 此外,它将能够在任何列中搜索和生成结果。 比如说,我们称之为 VLOOKUP2。 

通过按 ALT+F11 或从菜单中选择打开 Visual Basic 编辑器 服务 – 宏 – Visual Basic 编辑器 (工具——宏——Visual Basic 编辑器),插入一个新模块(菜单 插入 - 模块) 并在此处复制此函数的文本:

函数 VLOOKUP2(表作为变体,SearchColumnNum As Long,SearchValue 作为 Variant,_N As Long,ResultColumnNum As Long)Dim i As Long,iCount As Long Select Case TypeName(Table) Case "Range" For i = 1 To Table.Rows .Count If Table.Cells(i, SearchColumnNum) = SearchValue Then iCount = iCount + 1 End If iCount = N Then VLOOKUP2 = Table.Cells(i, ResultColumnNum) Exit For End If Next i Case "Variant()" For i = 1 To UBound(Table) If Table(i, SearchColumnNum) = SearchValue Then iCount = iCount + 1 If iCount = N Then VLOOKUP2 = Table(i, ResultColumnNum) Exit For End If Next i End Select End Function  

关闭 Visual Basic 编辑器并返回 Excel。

现在通过 插入 - 功能 (插入 - 功能) 在类别中 用户自定义 (用户自定义) 您可以找到我们的 VLOOKUP2 功能并使用它。 函数语法如下:

=VLOOKUP2(表;number_of_column_where_we 查找;lookup_value;N;number_of_column_from_to_get_value)

现在标准函数的限制对我们来说不是障碍:

改进 VLOOKUP 功能

PS 特别感谢 The_Prist 改进了功能,使其可以在封闭的书籍中进行搜索。

  • 使用 VLOOKUP 函数从一个表中查找数据并将其替换到另一个表中
  • 使用 INDEX 和 MATCH 函数的“Left VLOOKUP”

 

发表评论