改進 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 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”

 

發表評論