「Excel實用技巧」Mlookup函數來了!比Vlookup好用多了!

2021-01-10 侃侃職場事兒

最近總有很多同學提問Vlookup無法查找的問題,今天就翻出原來編寫自定義函數MLookup,希望對這些同學有用。

Vlookup是最常用到的查找函數,但它有很大的局限性。比如:只能查找第一個符合條件的值,無法任意位置查找和多條件查找等。於是,我用VBA編寫了一個功能強大的Mlookup函數。可以實現:

查找第N個查找最後一個多條件查找一對多查找一對多查找後合併

一、用法介紹

=Mlookup(查找內容,查找區域,返回值所在的列數,第N個)

語法說明:

查找內容:除了單個值外,還可以選取多個單元格,進行多條件查找。查找區域:同VLOOKUP返回值的在列數:同VLOOKUP第N個:值為1就返回第1個符合條件的,值為2就返回第2個符合條件的....當值為0值時,返回最後1個符合條件的值,值為-1時返回所有查找結果並用逗號連接(新增功能)

二、功能演示

【例】如下圖所示的入庫表中,要求完成以下查找。

1、查找第2次電視的進貨數量。

=Mlookup(A11,A2:D8,4,2)

2、查找電視的最後一次入庫數量

=Mlookup(A11,A2:D8,4,0)

3、查找47寸電視的第1次進貨數量。

=Mlookup(A11:B11,A2:D8,4,1)

4、實現篩選功能。

=Mlookup($B$10:$B$11,$A$1:$D$8,4,A14)

5、實現多結果查找功能。(把所有符合條件結果用逗號連接起來)

=MLOOKUP(A11,B$1:C$8,2,-1)

三、使用方法

Mlookup要想在你的表格中也能使用,需要按下面的步驟操作。

1、按alt+F11(鍵盤上如果有FN鍵 ,還需要同時按FN)會打開VBE窗口,在窗口中點插入 - 模塊。把下面的代碼複製粘貼到右側的空白區域中。

代碼(如下)

Function Mlookup(rg, rgs As Range, L As Integer, M As Integer)Dim arr1, ARR2, 列數Dim R, n, K, X, cc, sr As Stringarr1 = rg.ValueARR2 = rgsIf VBA.IsArray(arr1) ThenFor Each R In arr1If R <> "" Thencc = cc & R列數 = 列數 + 1End IfNext RElsecc = arr1End IfIf M > 0 Then '非查找最後一個For X = 1 To UBound(ARR2)sr = ""If 列數 > 1 ThenFor q = 1 To 列數sr = sr & ARR2(X, q)Next qElsesr = ARR2(X, 1)End IfIf sr = cc ThenK = K + 1If K = M ThenMlookup = ARR2(X, L)Exit FunctionEnd IfEnd IfNext XElseIf M = -1 Then '查找所有值For X = 1 To UBound(ARR2)sr = ""If 列數 > 1 ThenFor q = 1 To 列數sr = sr & ARR2(X, q)Next qElsesr = ARR2(X, 1)End IfIf sr = cc ThenMlookup = Mlookup & "," & ARR2(X, L)End IfNext XMlookup = Right(Mlookup, Len(Mlookup) - 1)Exit FunctionElse '查找最後一個For X = UBound(ARR2) To 1 Step -1sr = ""If 列數 > 1 ThenFor q = 1 To 列數sr = sr & ARR2(X, q)Next qElsesr = ARR2(X, 1)End IfIf sr = cc ThenMlookup = ARR2(X, L)Exit FunctionEnd IfNext XEnd IfMlookup = ""End FunctionEnd Function

2、當前文件另存為「啟用宏的工作簿」格式,

然後在這個表格中就可以像一樣使用Mlookup函數了。

註:如果你想在電腦中所有Excel文件中使用,可以保存為加截宏。但...在其他電腦上公式就會出錯。所以想用這個自定義函數,還是複製代碼吧。

Excel解釋說明:VBA就是這麼帥,需要什麼函數就編寫它。學會VBA後,你會發現excel變得無所不能!

相關焦點

  • vlookup函數使用匯總大全!
    大家都知道,在使用excel時,vlookup函數的使用頻率非常大,之前在網上看到這樣的一句話,不會vlookup函數就不要說會excel,那麼今天就帶領小夥伴們一起去了解它吧,看看在工作中都一般用於哪些場景呢?
  • 比Vlookup好用10倍的自定義函數VLOOKUPS,輕鬆解決VLOOKUP難題!
    Vlookup函數幫您輕鬆解決。2、你知道Vlookup出錯了是什麼原因,要如何解決嗎?你知道怎樣屏蔽錯誤值嗎?請看下面的分享內容。3、VLOOKUP是表親們的大眾情人,但他不能從右往左查詢,不能返回多個結果的問題,你有辦法解決嗎?那就讓比vlookup好用10倍的自定義函數vlookups來解決!
  • 使用vlookup與lookup函數就可以了
    Hello,大家好,今天跟大家分享下午我們如何查找數據中的第一條記錄和最後一條記錄,這也是一個粉絲提問到的問題,他們公司的打卡機是感應式的,每當人經過就會打一次卡,每天都會生成很多打卡記錄,每天都花費很多時間來統計公司員工的上下班時間。
  • excel函數應用技巧:如何按不同要求,改變數字格式
    筆者E圖表述就是這樣的一個人,他的愛好並不多,而EXCEL卻是這些為數不多的愛好中的最愛。只要有時間,他一定是在玩EXCEL,譬如今天。下午沒有什麼可做的,隨便在A2單元格寫了一個數字,43854,用它玩起了數字改變遊戲。遊戲規則只有一個:用且僅用函數的方式改變數字。遊戲1:取整把43854轉換成43000。
  • Excel函數公式:VLOOKUP函數和IF、CHOOSE函數組合實用技巧解讀
    眾所周知,VLOOKUP函數是Excel中實用頻率非常高的查找引用函數之一,但是由於語法規則的限制,在某些功能的實現上需要藉助於其他函數來完成。例如:從右向左查詢。一、VLOOKUP和IF函數組合實用技巧。目的:根據編號來查詢對應的姓名。
  • 當查詢的Excel表格列太多,這個函數給vlookup神助攻
    數據表查詢,如果你已經擁有了 O365,那麼恭喜你,xlookup 函數雲淡風輕中簡化並包羅了所有查詢函數,過去所積累的一切技巧都不再需要了。 可是很多讀者還是遺憾表示,沒有安裝 O365,那也不必沮喪,咱繼續 vlookup,那麼今天的教程就變得意義非凡。
  • Excel vlookup篩選兩列的重複項與查找兩個表格相同數據
    以下是vlookup篩選兩列的重複項與查找兩個表格相同數據的具體操作方法,實例中操作所用版本均為 Excel 2016。一、Excel vlookup篩選兩列的重複項1、假如要篩選出一個表格中兩列相同的數據。
  • 「Excel技巧」Excel快速實現將一行轉為多行多列的四種方法
    今天來說說在Excel中,將表格裡的一列轉換為多行多列的幾種方法。例如,以下表格,是一個行業分類表,都放在同一列中。現我們準備把它轉為多列。表格裡數據除掉標題行行,總共有60列數據,乾脆我們就給它轉為10行6列吧。
  • excel經典函數組合:index+match!工作中非常實用,案例解析掌握
    課程信息卡課程:《Excel天天訓練營》2.0圖文版章節:第2章-精通函數內容:定位查找(index\match)在excel函數裡面,index+match這一組函數做定位查找是非常實用的。如案例表格,因為月份是變化的,所以使用lookup或vlookup無法直接進行查詢。通過index+match這一組函數就可以定位到兩個數據的交叉位置,即查詢結果。如果你沒有學會這些函數,那麼就無法應對大量數據的表格。
  • vlookup加條件格式,輕鬆核對年終數據,這個套路你見過嗎?
    Hello,大家好,臨近年底我們總是要核對很多的數據,最近粉絲很多粉絲私信問到有沒有什麼比較快速容易掌握的數據核對技巧?其實我們使用vlookup函數即可輕鬆搞定數據核對這樣的問題,常見的數據核對大致上分為2種情況,核對單行數據以及核對多行數據。
  • 使用vlookup快速判定員工績效等級,再也不用一個一個的核對了
    Hello.大家好,工作中我們經常會遇到區間查找的問題,什麼是區間查找呢?簡單來說就是某一區間對應一個結果,比如根據考核成績判定等級,根據停車時間計算停車費等問題,解決這樣的問題,很多人都會是一個一個的核對,非常浪費時間,其實使用vlookup函數僅需2分鐘就能解決這樣的問題,操作也極其簡單,下面就讓我們來一起學習下一、vlookup的近似匹配vlookup函數的參數一共有四個,第四個參數決定了他的匹配類型,vlookup函數的匹配類型一共有兩種
  • 多條件數據查詢,你選擇用lookup、vlookup還是index+Match函數?
    今天我們就來詳細的學習一下Excel非常實用查詢函數:lookup、vlookup以及Index+Match函數在不同情況下的多條件查詢使用。看看大家都喜歡用哪一類函數進行數據的多條件查詢。函數一:vlookup函數進行多條件數據查詢案例說明:我們需要利用vlookup函數根據產品和日期兩個條件,查詢對應的當天產品出庫數量。
  • 「Excel技巧」Excel快速輸入當前日期時間的快捷法及函數法
    常年接觸excel,肯定會跟日期時間打交道。掌握一些關於日期和時間的輸入方法和技巧,可以幫助你快速完成工作。現在就來看看關於日期時間的輸入技巧及函數輸入法。一、快速獲取當前日期時間1、返回當前日期和時間函數法:在目標單元格裡輸入公式:=now()。快捷鍵法:在鍵盤上先按下【Ctrl+;】,然後再按下【Ctrl+Shift+;】,即插入了當前的日期和時間。
  • Excel技巧:5個極度燒腦,但極其實用的Excel函數公式!
    今天和大家分享的幾條函數公式,一個比一個燒腦,但又非常實用。因為燒腦,所以計算原理和過程我們就不解釋了。因為實用,所以建議大家收藏,用到的時候可以直接拿去套用。具體操作如下:1、文本格式的時間轉換,燒腦指數★如下圖所示,將A列的文本時間轉換成分鐘。
  • 使用vlookup解決自定義排序的問題,原來自定義排序竟如此簡單
    Hello,大家好,今天跟大家分享下如何自定義排序,實現想怎麼排序就怎麼排序,工作中我們可能會遇到這樣的問題,就是要根據給定的數據位置進行排序,如果我們直接使用排序excel會根據默認的排序規則進行排序,而不能達到我們想要的結果,解決這樣的問題,跟大家分享2種方法,一種是使用自定義排序,一種是使用
  • excel怎樣運用VLOOKUP函數與INDEX-MATCH函數進行查找?
    在實際工作中,我們經常使用vlookup函數與index-match函數進行查找,這倆個函數都可以實現查找的功能,下面就基本查找,反向查找,多條件查找對比下這兩個函數的運用方式。一:基本查找vlookup第一個參數表示查找的依據,第二個參數表示查找的範圍,第三個參數表示返回的結果在查找範圍的第幾列,第四個參數是選擇精確匹配還是近似匹配。主要值得注意的地方是選擇的範圍必須從查找依據所在列開始選,否則返回結果錯誤,查找對應單元格一般選擇精確匹配,近似匹配一般適用於對應區間的查找。
  • Excel中Vlookup函數不能做的,lookup函數輕輕鬆鬆完成!
    工作中,vlookup函數是大眾情人,但也有它完成不了的工作,這個時候用lookup函數便可以輕鬆的完成!1、查找最後一條記錄例如公司會持續進不同的物品,不同的數量,現在我們需要求出最後一次進貨的數量是多少?
  • excel中的small函數和large函數,與其他函數結合還有這功能!
    在excel中,large函數和small函數用的人比較少,但是用的少並不代表這兩個函數沒有用,反而十分,今天小編就專門寫了這篇文章來介紹一下這兩個函數,一起學習一下吧、一、基本用法。對於large函數和small函數,都只有兩個參數,分別為large(數值區域,返回的第幾個最大值),small(數值區域,返回的第幾個最小值)。
  • excel函數技巧:如何用三角函數製作環形氣泡圖
    編按:哈嘍,大家好!在往常的一些excel教程中,我們總會給大家講解一些實用的熱門函數,比如VLOOKUP,INDEX,MATCH,SUMIFS,COUNTIFS等,但是說到「三角函數」,相信大多數人都會答不上來,甚至從未聽說過。這類函數雖然冷門,但卻有著一身「好本領」,一起來看看下面這篇文章吧!
  • excel函數應用技巧:按區間統計個數,就用Frequency
    最簡單、最快速的辦法是用高級函數Frequency。學習更多技巧,請收藏關注部落窩教育excel圖文教程。價格帶分析是一項基礎的數據分析,在某醫藥銷售公司工作的小王,最近就遇上一個這樣的任務……領導給了50個護肝類藥品的價格信息,讓小王統計出每個價格區間的品規數,數據要求如圖所示: 註:表中價格數據為模擬值並非市場實際價格。