Vlookup函數怎麼一次查找能返回多個結果?
Match+Index函數比Vlookup函數功能很多,不僅可以返回多個結果,還可以完成多個條件查詢!
看下圖,姓名重複了,VLOOKUP無法判斷!Match+Index多條件查詢可以輕鬆完成!
Match+Index功能>Vlookup功能
請點擊此處輸入圖片描述
以上圖為例,姓名重複時,查找引用函數Match+Index實現多條件查詢。
原理:將姓名和學號列合併產生一個唯一值!然後查找這個唯一值返回對應數據即可!
步驟一:在C12單元格輸入=INDEX(D2:D8,MATCH(A12:A18&B12:B18,$A$2:$A$8&$B$2:$B$8,0))
請點擊此處輸入圖片描述
步驟二:輸入完函數後以CTRL+SHIFT+ENTER三鍵結束!!!
我們來解析一下=INDEX(D2:D8,MATCH(A12:A18&B12:B18,$A$2:$A$8&$B$2:$B$8,0))
A12:A18B12:B18,是將姓名+學號合併,即「曾令煊」+「C120101」,曾令煊C120101
$A$2:$A$8$B$2:$B$8是將姓名列+學號列合併
MATCH會在合併列里查找合併的數據「曾令煊C120101」
即MATCH(A12:A18&B12:B18,$A$2:$A$&8$B$2:$B$8,0))返回「曾令煊C120101」所在的行數1
D2:D8是總分列
INDEX(D2:D8,MATCH(A12:A18&B12:B18,$A$2:$A$8&$B$2:$B$8,0)))返回D2:D8列中的第「1」行,即703.50分。
請點擊此處輸入圖片描述
這裡大家需要注意一個技巧,輸入函數之前一定要選定C12:C18區域,然後到fx插入函數,最後以CTRL+SHIFT+ENTER三鍵結束!
請點擊此處輸入圖片描述
所有的對應分數就會被查找出來了!
請點擊此處輸入圖片描述
更多免費教程及表格模板,私聊里回復相應的關鍵字獲取!
行業財務報表:回復「財務報表」
項目進度表:回復「項目進度表」
考勤表:回復「考勤表」
HR管理系統:回復「HR管理」
倉管表:回復「倉管表」
進銷存管理系統:回復「進銷存」
員工薪資管理系統:回復「個稅工資條」
自動生成全年排班表:回復「排班表」
精美圖表模板:回復「分享」
Office Excel2016最新版:回復「2016」
兩步即可實現Vlookup函數的一對多查找!!
案例如下表中,我們要查找所有屬於二組的成員,但是從左邊的表格中可以看出,二組對應兩個成員:高玉良、李達康,也就是說一次要查找並返回兩個值。
Vlookup函數有一個特點:總會以第一個被找到數據作為最終的匹配數據。
意思就是說,無論一個查找值對應多少個應返回的值,查找之後,總是返回第一個找到的值。
所以,當有兩個」二組「同時存在時,很自然的,它只能默認為匹配首個,也就是說只能返回」高育良「。
那麼,是不是傳說中的Vlookup遇到這種情況也只能望洋興嘆,無能為力啊?
當然不是!
作為專業從事匹配工作的函數,Vlookup只是需要一些額外的輔助。
Step1:構造輔助列從數據源中可以看出來一定的規律:比如,組別中第一個「一組」對應「侯亮平」,第二個「一組」對應「陳海」……,也即需要返回的成員是按照次序排列的。
所以,為了實現一對一匹配,需要構建出組別的次序。
在C2單元格中輸入公式=COUNTIF(A$2:A2,A2),並向下複製填充,可以求出每一個組別對應成員的次序。
求出成員在組別中的次序
這一步是非常關鍵的一點,可以看出,求出成員的次序之後,從次序上來看,每個組別返回成員時,就是唯一值了。
然後插入一個新列如圖中的B列,並將A列數據和D列數據組合,公式為:=A2&D2,形成新的數據列,如圖所示。
奇蹟出現了,使用新組別這一列數據去查找成員,相當於為每一個組別創造了唯一的識別碼,再用Vlookup時,就能精確地一對一匹配到了。
至此,可得出解決此問題的關鍵點為:
①通過COUNTIF函數,製造出序列(難點是A$2:A2動態引用,這是創造正確編號的核心);
②通過&組合組別和次序,製造唯一性。
Step2:實現VLOOKUP一對多查找萬事俱備只欠東風,最後一步——Vlookup多條件匹配。
在G2單元格中寫入公式=VLOOKUP(F$2&ROW(A1),B:C,2,0),然後向下複製填充,直到出現#N/A錯誤,則會返回「二組」對應的所有成員。
這裡使用ROW(A1)函數生成序列,然後再與F2單元格組合,於是就依次生成「二組1」,「二組2」,相當於在數據表中創建了一個輔助列,只不過這樣的做法更加簡便。
The End
關注「精進Excel」,任意點開三篇文章,不滿意算我耍流氓!!
作為Excel中的大眾情人,VLOOKUP函數可謂是人見人愛,花見花開,俗稱「職場必殺技」。
可是人無完人,函數也沒有完美的函數,VLOOKUP函數有兩大弱點:
一是當存在多條滿足條件的記錄時,VLOOKUP函數只能返回第1個滿足條件的記錄。
二是第3個參數必須為正,不能為負,即只能從左往右查,不能從右往左查。
今天,我們來看看如果破解VLOOKUP函數的第一個弱點。
案例:
有這樣一組數據。
希望得到這樣的結果。
下面我們來一步一步實現想要的效果。
第一步:建立基礎表格,插入控制項。
第二步:編輯通知單編號。
公式=2015000+F2&""(其中,""是為了將數字格式轉換為文本格式)
第三步:在原始數據中設置輔助列,對重複的查找值進行編碼。
公式=IF(B2=通知單!$D$2,COUNT($A$1:A1)+1,"")
公式解讀:當源數據中的通知單編號與通知單SHEET表中通知單編號一致時,則返回該編號是第幾次出現,如果不一致則為空格。
第四步:在通知單sheet表中輸入公式,進行查找。
公式=IFERROR(VLOOKUP(ROW(1:1),源數據!$A:$E,COLUMN(B:B),0),"")
當通知單編號發生變化時,源數據中的輔助列也在發生變化,編號為哪一個,輔助列中對應的編碼都發生變化。
然後用IFERROR函數將沒有編碼的通知單屏蔽,變為空格。
公式原理如圖所示。
好啦,案例分析就到這裡了,源文件下載地址:
鏈接:http://pan.baidu.com/s/1i4RNyNr 密碼:vyza
有需要的同學別忘記關注我哦。
我是罌粟姐姐,樂於分享Excel中的各種小知識。
VLOOKUP函數一般一次只能返回一個結果,本例介紹通過輔助列的方法使VLOOKUP函數查詢一個值,返回這個值對應的多個結果。
解決方案說明
在原始數據中A列有多個「張三丰」,需要提取每個「張三丰」對應的「工號」。
一般情況的VLOOKUP只能返回第一個值,如下:
=VLOOKUP(A8,A1:D5,2,0)
在【姓名】列前插入一列,如下圖輸入公式:
=COUNTIF(B$2:B2,B2)
這個公式返回每個「姓名」從上到下是第幾次出現,如第二個「張三丰」標記2。
將A2公式改成:
=B2&COUNTIF(B$2:B2,B2)
這樣就將B列的「姓名」和出現次數連在一起。
在B8輸入公式:
=A8&ROW(A1)
將A8值和ROW(A1)返回的1連在一起,下拉ROW(A1)會變成ROW(A2)返回2。
將B8的公式修改成如下:
=VLOOKUP(A$8&ROW(A1),A$1:E$5,3,0)
也就是在A1:E5範圍內查詢「張三丰」和出現次數的文本對應第3列的【工號】。
將公式下拉,就將所有「張三丰」對應的信息查詢出來了。
更多財稅職場學習資訊,關注秀財網
{!-- PGC_VIDEO:{"status": 0, "thumb_height": 360, "thumb_url": "48680006cab3d99eef3f", "media_id": 1579335960823821, "vname": "18.wmv", "vid": "9e0364eb802b447698efe7859d4cd011", "vu": "9e0364eb802b447698efe7859d4cd011", "src_thumb_uri": "4866000dd1194b283f00", "neardup_id": 10304497260346140414, "sp": "toutiao", "vposter": "http://p0.pstatp.com/origin/48680006cab3d99eef3f", "external_covers": [{"mimetype": "webp", "source": "dynpost", "thumb_height": 360, "thumb_url": "4867000d6891008e8770", "thumb_width": 480}], "thumb_width": 480, "item_id": 6491117965067420174, "video_size": {"high": {"h": 480, "subjective_score": 0, "w": 640, "file_size": 63673739.0}, "ultra": {"h": 720, "subjective_score": 0, "w": 960, "file_size": 84561528.0}, "normal": {"h": 360, "subjective_score": 0, "w": 480, "file_size": 56467826.0}}, "duration": 4920, "user_id": 6278328253, "group_id": 6491117965067420174, "md5": "cc90863c638f9a60c5782aed0f823c38", "hash_id": 10304497260346140414} --}
{!-- PGC_VIDEO:{"status": 0, "thumb_height": 360, "thumb_url": "3f920011f08112d54f0e", "media_id": 1579335960823821, "vname": "u89c6u9891uff1au7b2cu5341u4e00u8bb2Vlookup.wmv", "vid": "a5a7d34f65a740d4b8fdcddb113999c5", "vu": "a5a7d34f65a740d4b8fdcddb113999c5", "src_thumb_uri": "3f920011f08112d54f0e", "neardup_id": 9436376820532083048, "sp": "toutiao", "vposter": "http://p0.pstatp.com/origin/3f920011f08112d54f0e", "external_covers": [{"mimetype": "webp", "source": "dynpost", "thumb_height": 360, "thumb_url": "3f98000958d2ebf12197", "thumb_width": 480}], "thumb_width": 480, "item_id": 6477781348382671373, "video_size": {"high": {"h": 480, "subjective_score": 0, "w": 640, "file_size": 58105705.0}, "ultra": {"h": 720, "subjective_score": 0, "w": 960, "file_size": 78162088.0}, "normal": {"h": 360, "subjective_score": 0, "w": 480, "file_size": 51025381.0}}, "duration": 4462, "user_id": 6278328253, "group_id": 6477781348382671373, "md5": "78f9219dcd651bec6099f5b7429f68d0", "hash_id": 9436376820532083048} --}
{!-- PGC_VIDEO:{"status": 0, "thumb_height": 360, "thumb_url": "3f99000367a0dd3f1cd0", "media_id": 1579335960823821, "vname": "u89c6u9891uff1au7b2cu5341u4e8cu8bb2.wmv", "vid": "7411fa5dc9c543e08cd296c22625e0b2", "vu": "7411fa5dc9c543e08cd296c22625e0b2", "src_thumb_uri": "3f99000367a0dd3f1cd0", "neardup_id": 15513187835998789732, "sp": "toutiao", "vposter": "http://p0.pstatp.com/origin/3f99000367a0dd3f1cd0", "external_covers": [{"mimetype": "webp", "source": "dynpost", "thumb_height": 360, "thumb_url": "3f96000ad44f065a9e10", "thumb_width": 480}], "thumb_width": 480, "item_id": 6477782044364505613, "video_size": {"high": {"h": 480, "subjective_score": 0, "w": 640, "file_size": 54939874.0}, "ultra": {"h": 720, "subjective_score": 0, "w": 960, "file_size": 73233329.0}, "normal": {"h": 360, "subjective_score": 0, "w": 480, "file_size": 48559191.0}}, "duration": 4281, "user_id": 6278328253, "group_id": 6477782044364505613, "md5": "dee7f9291ef876f3a60747b9d3325219", "hash_id": 15513187835998789732} --}
{!-- PGC_VIDEO:{"status": 0, "thumb_height": 360, "thumb_url": "48650011600110d393ce", "media_id": 1579335960823821, "vname": "u5341u4e5du8bb2 - u526fu672c.flv", "vid": "f8034d3a6950460dbd8bb7e936a9470a", "vu": "f8034d3a6950460dbd8bb7e936a9470a", "src_thumb_uri": "48650011600110d393ce", "neardup_id": 16538208014485183326, "sp": "toutiao", "vposter": "http://p0.pstatp.com/origin/48650011600110d393ce", "external_covers": [{"mimetype": "webp", "source": "dynpost", "thumb_height": 360, "thumb_url": "4867000edb44e3ec4fa0", "thumb_width": 480}], "thumb_width": 480, "item_id": 6491121524555121165, "video_size": {"high": {"h": 480, "subjective_score": 0, "w": 640, "file_size": 71864175.0}, "ultra": {"h": 720, "subjective_score": 0, "w": 960, "file_size": 110056250.0}, "normal": {"h": 360, "subjective_score": 0, "w": 480, "file_size": 59692012.0}}, "duration": 4290, "user_id": 6278328253, "group_id": 6491121524555121165, "md5": "3725dc587bf8ca4cca9530171de8e6df", "hash_id": 16538208014485183326} --}
看看這幾個視頻吧,讓你水平上一個台階!謝謝邀請
VLOOKUP函數是EXCEL最常用的查找函數,VLOOKUP函數欄目有很多該函數的各種使用方法的教程,但還是有很多同學提問與該函數有關的問題。本文將常見的VLOOKUP函數相關問題總結一下,主要為VLOOKUP函數怎麼用?如何使用VLOOKUP函數進行反向逆向查找、模糊查找、區間查找、多條件查找、多項查找。
一、VLOOKUP函數怎麼用?
VLOOKUP是一個查找函數,給定一個查找的目標,它就能從指定的查找區域中查找返回想要查找到的值。它的基本語法為:
VLOOKUP(查找目標,查找範圍,返回值的列數,精確OR模糊查找)
下面以一個實例來介紹一下這四個參數的使用
例:如下圖所示,要求根據表二中的姓名,查找姓名所對應的年齡。
公式:B13 =VLOOKUP(A13,$B$2:$D$8,3,0)
參數說明:
1、查找目標:就是你指定的查找的內容或單元格引用。本例中表二A列的姓名就是查找目標。我們要根據表二的「姓名」在表一中A列進行查找。
公式:B13 =VLOOKUP(A13,$B$2:$D$8,3,0)
2、查找範圍(VLOOKUP(A13,$B$2:$D$8,3,0) ):指定了查找目標,如果沒有說從哪裡查找,EXCEL肯定會很為難。所以下一步我們就要指定從哪個範圍中進行查找。VLOOKUP的這第二個參數可以從一個單元格區域中查找,也可以從一個常量數組或內存數組中查找。本例中要從表一中進行查找,那麼範圍我們要怎麼指定呢?這裡也是極易出錯的地方。大家一定要注意,給定的第二個參數查找範圍要符合以下條件才不會出錯:
A 查找目標一定要在該區域的第一列。本例中查找表二的姓名,那麼姓名所對應的表一的姓名列,那麼表一的姓名列(列)一定要是查找區域的第一列。象本例中,給定的區域要從第二列開始,即$B$2:$D$8,而不能是$A$2:$D$8。因為查找的「姓名」不在$A$2:$D$8區域的第一列。
B 該區域中一定要包含要返回值所在的列,本例中要返回的值是年齡。年齡列(表一的D列)一定要包括在這個範圍內,即:$B$2:$D$8,如果寫成$B$2:$C$8就是錯的。
3、返回值的列數(B13 =VLOOKUP(A13,$B$2:$D$8,3,0))。這是VLOOKUP第3個參數。它是一個整數值。它怎麼得來的呢。它是「返回值」在第二個參數給定的區域中的列數。本例中我們要返回的是「年齡」,它是第二個參數查找範圍$B$2:$D$8的第3列。這裡一定要注意,列數不是在工作表中的列數(不是第4列),而是在查找範圍區域的第幾列。如果本例中要是查找姓名所對應的性別,第3個參數的值應該設置為多少呢。答案是2。因為性別在$B$2:$D$8的第2列中。
4、精確OR模糊查找(VLOOKUP(A13,$B$2:$D$8,3,0) ),最後一個參數是決定函數精確和模糊查找的關鍵。精確即完全一樣,模糊即包含的意思。第4個參數如果指定值是0或FALSE就表示精確查找,而值為1 或TRUE時則表示模糊。這裡蘭色提醒大家切記切記,在使用VLOOKUP時千萬不要把這個參數給漏掉了,如果缺少這個參數默為值為模糊查找,我們就無法精確查找到結果了。
二、VLOOKUP的反向查找
VLOOKUP的反向查找,需要用IF函數把數據源倒置一下。
一般情況下,VLOOKUP函數只能從左向右查找。但如果需要從右向右查找,則需要把區域進行「乾坤大挪移」,把列的位置用數組互換一下。
例:要求在如下圖所示表中的姓名反查工號。
公式:=VLOOKUP(A9,IF({1,0},B2:B5,A2:A5),2,0)
公式剖析:
1、這裡其實不是VLOOKUP可以實現從右至右的查找,而是利用IF函數的數組效應把兩列換位重新組合後,再按正常的從左至右查找。
2、IF({1,0},B2:B5,A2:A5)這是本公式中最重要的組成部分。在EXCEL函數中使用數組時(前提時該函數的參數支持數組),返回的結果也會是一個數組。這裡1和0不是實際意義上的數字,而是1相關於TRUE,0相當於FALSE,當為1時,它會返回IF的第二個參數(B列),為0時返回第二個參數(A列)。根據數組運算返回數組,所以使用IF後的結果返回一個數組(非單元格區域):{"張一","A001";"趙三","A002";"楊五","A003";"孫二","A004"}
三、VLOOKUP的模糊查找
模糊查找就是匹配查找。
在A列我們知道如何查找型號為「AAA」的產品所對應的B列價格,即:
=VLOOKUP(C1,A:B,2,0)
如果需要查找包含「AAA」的產品名稱怎麼表示呢?如下圖表中所示。
公式=VLOOKUP("*"&A10&"*",A2:B6,2,0)
公式說明:VLOOKUP的第一個參數允許使用通配符「*」來表示包含的意思,把*放在字元的兩邊,即"*" & 字元 & "*"。
四、VLOOKUP的區間查找
數字的區間查找即給定多個區間,指定一個數就可以查找出它在哪個區間並返回這個區間所對應的值。
VLOOKUP的第4個參數,如果為0或FALSE是精確查找,如果是1或TRUE或省略則為模糊查找,那麼實現區間查找正是第4個參數的模糊查找應用。
首先需要了解一下VLOOKUP函數模糊查找的兩個重要規則:
1、引用的數字區域一定要從小到大排序。雜亂的數字是無法準確查找到的。如下面A列符合模糊查找的前題,B列則不符合。
2、模糊查找的原理是:給一定個數,它會找到和它最接近,但比它小的那個數。詳見下圖說明。
最後看一個實例:
例:如下圖所示,要求根據上面的提成比率表,在提成表計算表中計算每個銷售額的提成比率和提成額。
公式:=VLOOKUP(A11,$A$3:$B$7,2)
公式說明:
1、上述公式省略了VLOOKUP最後一個參數,相當於把第四個參數設置成1或TRUE。這表示VLOOKUP要進行數字的區間查找。
2、圖中公式中在查找5000時返回比率表0所對應的比率1%,原因是0和10000與5000最接近,但VLOOKUP只選比查找值小的那一個,所以公式會返回0所對應的比率1%。
五、VLOOKUP的多條件查找
VLOOKUP函數需要借用數組才能實現多條件查找。
例:要求根據部門和姓名查找C列的加班時間。
分析:不是讓VLOOKUP本身實現多條件查找,而是想辦法重構一個數組。多個條件可以用&連接在一起,同樣兩列也可以連接成一列數據,然後用IF函數進行組合。
公式:{=VLOOKUP(A9&B9,IF({1,0},A2:A5&B2:B5,C2:C5),2,0)}
公式剖析:
1、A9&B9 把兩個條件連接在一起。把他們做為一個整體進行查找。
2、A2:A5&B2:B5,和條件連接相對應,把部分和姓名列也連接在一起,作為一個待查找的整體。
3、IF({1,0},A2:A5&B2:B5,C2:C5) 用IF({1,0}把連接後的兩列與C列數據合併成一個兩列的內存數組。按F9後可以查看的結果為:
{"銷售張一",1;"銷售趙三",5;"人事楊五",3;"銷售趙三",6}
4、完成了數組的重構後,接下來就是VLOOKUP的基本查找功能了,另外公式中含有多個數據與多個數據運算(A2:A5&B2:B5),,所以必須以數組形式輸入,即按ctrl+shift後按ENTER結束輸入。
六、VLOOKUP的多項查找
VLOOKUP一般情況下只能查找一個,那麼多項該怎麼查找呢?
例3 要求把如圖表中所有張一的消費金額全列出來
分析:經過前面的學習,我們也有這樣一個思路,我們在實現複雜的查找時,努力的方向是怎麼重構一個查找內容和查找的區域。要想實現多項查找,我們可以對查找的內容進行編號,第一個出現的是後面連接1,第二個出現的連接2。。。
公式:{=VLOOKUP(B$9&ROW(A1),IF({1,0},$B$2:$B$6&COUNTIF(INDIRECT("b2:b"&ROW($2:$6)),B$9),$C$2:$C$6),2,)}
公式剖析:
1、B$9&ROW(A1) 連接序號,公式向下複製時會變成B$9連接1,2,3
2、給所有的張一進行編號。要想生成編號,就需要生成一個不斷擴充的區域(INDIRECT("b2:b"&ROW($2:$6)),然後在這個逐行擴充的區域內統計「張一」的個數,在連接上$B$2:$B$6後就可以對所有的張一進行編號了。
3、IF({1,0}把編號後的B列和C組重構成一個兩列數組
通過以上的講解,需要知道,VLOOKUP函數的基本用法是固定的,要實現高級查找,就需要藉助其他函數來重構查找內容和查找數組。
謝謝邀請??????????????
這個問題應該說的是一對多的匹配,其實不難主要是一個思路問題:
一對多匹配,比如一個產品的供應商有多個,要根據產品把所有的供應商匹配出來:
如上圖根據左邊的數據源表在右邊的供應商匹配表中匹配出每個產品對應的供應商:
第一步:優化數據源表,給表格新增匹配列。
選中第一列右鍵 > 查入一列 > 在第一個單元格利用countif函數製作匹配值:=B2&COUNTIF(B$1:B2,B2) > 向下複製填充
註:COUNTIF(B$1:B2,B2) 是用來確定重複數值是第幾次出現;
第二步:用VLOOKUP函數在目標表格匹配對應的值。
選中第一個單元格輸入公式:=IFERROR(VLOOKUP($E2&COLUMN(A1),$A:$C,3,0),"") > 向左,向下複製填充:
註:
COLUMN(A1)為了實現向右複製過程中返回數值1、2、3序號,用&和產品鏈接,實現生成A1、A2、A3···
$E2,實現向右複製不改變引用單元格,向下複製改變單元格;
IFERROR函數實現無值的時候現實為空白:
如果夥伴們想要利用碎片時間學習excel、ppt、ps、axure等職場軟體,或者在關鍵的時候需要一個可以提供幫助的小夥伴,關注【菜鳥辦公】小超隨叫隨到
推薦閱讀: