Advanced na VLOOKUP sa Excel: maramihan, doble, nested

  • Ibahagi Ito
Michael Brown

Ang mga halimbawang ito ay magtuturo sa iyo kung paano mag-Vlookup ng maraming pamantayan, magbalik ng isang partikular na instance o lahat ng mga tugma, magsagawa ng dynamic na Vlookup sa maraming sheet, at higit pa.

Ito ang pangalawang bahagi ng ang serye na tutulong sa iyo na gamitin ang kapangyarihan ng Excel VLOOKUP. Ang mga halimbawa ay nagpapahiwatig na alam mo kung paano gumagana ang function na ito. Kung hindi, makatuwirang magsimula sa mga pangunahing paggamit ng VLOOKUP sa Excel.

Bago magpatuloy, hayaan mong ipaalala ko sa iyo sa madaling sabi ang syntax:

VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup] )

Ngayong lahat ay nasa parehong pahina, tingnan natin ang mga advanced na halimbawa ng formula ng VLOOKUP:

    Paano mag-Vlookup ng maraming pamantayan

    Ang Excel Ang VLOOKUP function ay talagang nakakatulong pagdating sa paghahanap sa isang database para sa isang tiyak na halaga. Gayunpaman, kulang ito ng mahalagang feature - nagbibigay-daan ang syntax nito para sa isang value ng lookup lang. Ngunit paano kung gusto mong maghanap ng maraming kundisyon? Mayroong ilang iba't ibang solusyon na mapagpipilian mo.

    Formula 1. VLOOKUP na may dalawang pamantayan

    Ipagpalagay na mayroon kang listahan ng mga order at gusto mong hanapin ang dami batay sa 2 pamantayan, Pangalan ng customer at Produkto . Ang isang kumplikadong kadahilanan ay ang bawat customer ay nag-order ng maraming produkto, tulad ng ipinapakita sa talahanayan sa ibaba:

    Ang isang karaniwang formula ng VLOOKUP ay hindi gagana sa sitwasyong ito dahil ibinabalik nito ang unang nakita tugma batay sa amga rehiyon:

    Tulad ng sa nakaraang halimbawa, nagsisimula tayo sa pagtukoy ng ilang pangalan:

    • Ang saklaw ng A2:B5 sa CA sheet ay pinangalanang CA_Sales .
    • Ang hanay ng A2:B5 sa FL sheet ay pinangalanang FL_Sales .
    • Ang hanay ng A2:B5 sa KS sheet ay pinangalanang KS_Sales .

    Tulad ng nakikita mo, ang lahat ng pinangalanang hanay ay may isang karaniwang bahagi ( Mga Benta ) at mga natatanging bahagi ( CA , FL , KS ). Pakitiyak na pangalanan ang iyong mga hanay sa katulad na paraan dahil mahalaga ito para sa formula na gagawin namin.

    Formula 1. INDIRECT VLOOKUP para dynamic na kumuha ng data mula sa iba't ibang sheet

    Kung ang iyong gawain ay ang pagkuha ng data mula sa maraming sheet, isang VLOOKUP INDIRECT formula ang pinakamahusay na solusyon – compact at madaling maunawaan.

    Para sa halimbawang ito, inaayos namin ang summary table sa ganitong paraan:

    • Ipasok ang mga produkto ng interes sa A2 at A3. Iyan ang aming mga value sa paghahanap.
    • Ilagay ang mga natatanging bahagi ng mga pinangalanang hanay sa B1, C1 at D1.

    At ngayon, pinagsasama-sama namin ang cell na naglalaman ng natatanging bahagi (B1) gamit ang karaniwang bahagi ("_Sales"), at ipakain ang nagresultang string sa INDIRECT:

    INDIRECT(B$1&"_Sales")

    Binabago ng INDIRECT function ang string sa isang pangalan na mauunawaan ng Excel, at inilagay mo ito sa ang table_array argument ng VLOOKUP:

    =VLOOKUP($A2, INDIRECT(B$1&"_Sales"), 2, FALSE)

    Napupunta ang formula sa itaas sa B2, at pagkatapos ay kopyahin mo ito pababa at sa kanan.

    Pakiusap bigyang pansin na, sa halaga ng paghahanap ($A2),ni-lock namin ang column coordinate na may absolute cell reference upang ang column ay mananatiling maayos kapag ang formula ay kinopya sa kanan. Sa B$1 na sanggunian, ni-lock namin ang row dahil gusto naming magbago ang coordinate ng column at magbigay ng naaangkop na bahagi ng pangalan sa INDIRECT depende sa column kung saan kinopya ang formula:

    Kung iba ang pagkakaayos ng iyong pangunahing talahanayan, ang mga value ng lookup sa isang row at mga natatanging bahagi ng mga pangalan ng hanay sa isang column, dapat mong i-lock ang coordinate ng row sa lookup value (B$1) at ang coordinate ng column sa mga bahagi ng pangalan ($A2):

    =VLOOKUP(B$1, INDIRECT($A2&"_Sales"), 2, FALSE)

    Formula 2. VLOOKUP at mga nested IF para maghanap ng maraming sheet

    Sa sitwasyon kapag mayroon kang dalawa o tatlong lookup sheet lang, maaari kang gumamit ng medyo simpleng VLOOKUP formula na may nested IF function para piliin ang tamang sheet batay sa key value sa isang partikular na cell:

    =VLOOKUP($A2, IF(B$1="CA", CA_Sales, IF(B$1="FL", FL_Sales, IF(B$1="KS", KS_Sales,""))), 2, FALSE)

    Kung saan $A2 ay ang lookup value (pangalan ng item) at B$1 ang key value (state):

    Sa kasong ito, hindi mo kailangang tukuyin ang mga pangalan at maaaring gumamit ng external mga sanggunian upang sumangguni sa isa pang sheet o workbook.

    Para sa higit pang formula exa mples, pakitingnan ang Paano mag-VLOOKUP sa maraming sheet sa Excel.

    Ganyan gamitin ang VLOOKUP sa Excel. Salamat sa pagbabasa at umaasa akong makita ka sa aming blog sa susunod na linggo!

    Magsanay ng workbook para sa pag-download

    Mga advanced na halimbawa ng formula ng VLOOKUP (.xlsxfile)

    solong lookup value na iyong tinukoy.

    Upang malampasan ito, maaari kang magdagdag ng helper column at pagsamahin ang mga value mula sa dalawang lookup column ( Customer at Product ) doon. Mahalaga na ang helper column ay dapat ang kaliwa column sa table array dahil dito palaging hinahanap ng Excel VLOOKUP ang lookup value.

    Kaya, magdagdag ng column sa kaliwa ng iyong talahanayan at kopyahin ang formula sa ibaba sa hanay na iyon. Ipo-populate nito ang helper column ng mga value mula sa column B at C (ang space character ay pinagsama-sama sa pagitan para sa mas madaling mabasa):

    =B2&" "&C2

    At pagkatapos, gumamit ng karaniwang VLOOKUP formula at lugar parehong pamantayan sa argumento na lookup_value , na pinaghihiwalay ng puwang:

    =VLOOKUP("Jeremy Sweets", A2:D11, 4, FALSE)

    O, ipasok ang pamantayan sa magkahiwalay na mga cell (G1 at G2 sa aming kaso) at pagsamahin ang mga iyon cells:

    =VLOOKUP(G1&" "&G2, A2:D11, 4, FALSE)

    Dahil gusto naming magbalik ng value mula sa column D, na pang-apat sa array ng talahanayan, gumagamit kami ng 4 para sa col_index_num . Ang argument na range_lookup ay nakatakda sa FALSE sa Vlookup ng eksaktong tugma. Ipinapakita ng screenshot sa ibaba ang resulta:

    Kung sakaling ang iyong lookup table ay nasa isa pang sheet , isama ang pangalan ng sheet sa iyong VLOOKUP formula. Halimbawa:

    =VLOOKUP(G1&" "&G2, Orders!A2:D11, 4, FALSE)

    Bilang kahalili, lumikha ng pinangalanang hanay para sa lookup table (sabihin, Mga Order ) upang gawing mas madaling basahin ang formula:

    =VLOOKUP(G1&" "&G2, Orders, 4, FALSE)

    Para sa higit pang impormasyon, pakitingnan ang PaanoVlookup mula sa isa pang sheet sa Excel.

    Tandaan. Para gumana nang tama ang formula, ang mga value sa column ng helper ay dapat na pagsama-samahin nang eksakto sa parehong paraan tulad ng sa lookup_value argument. Halimbawa, gumamit kami ng space character upang paghiwalayin ang pamantayan sa parehong column ng helper (B2&" "&C2) at VLOOKUP formula (G1&" "&G2).

    Formula 2. Excel VLOOKUP na may maraming kundisyon

    Sa teorya, maaari mong gamitin ang diskarte sa itaas sa Vlookup nang higit sa dalawang pamantayan. Gayunpaman, mayroong ilang mga caveat. Una, ang isang lookup value ay limitado sa 255 character, at pangalawa, ang disenyo ng worksheet ay maaaring hindi payagan ang pagdaragdag ng helper column.

    Sa kabutihang palad, ang Microsoft Excel ay kadalasang nagbibigay ng higit sa isang paraan upang gawin ang parehong bagay. Upang Vlookup ang maraming pamantayan, maaari mong gamitin ang alinman sa kumbinasyon ng INDEX MATCH o ang XLOOKUP function na kamakailang ipinakilala sa Office 365.

    Halimbawa, upang maghanap batay sa 3 magkakaibang mga halaga ( Petsa , Pangalan ng customer at Produkto ), gamitin ang isa sa mga sumusunod na formula:

    =INDEX(D2:D11, MATCH(1, (G1=A2:A11) * (G2=B2:B11) * (G3=C2:C11), 0))

    =XLOOKUP(1, (G1=A2:A11) * (G2=B2:B11) * (G3=C2:C11), D2:D11)

    Saan:

    • Ang G1 ay pamantayan 1 (petsa)
    • Ang G2 ay pamantayan 2 (pangalan ng customer)
    • Ang G3 ay pamantayan 3 (produkto)
    • A2:Ang A11 ay paghahanap range 1 (dates)
    • B2:B11 ay lookup range 2 (customer names)
    • C2:C11 is lookup range 3 (products)
    • D2:D11 is the return saklaw (dami)

    Tandaan. Sa lahat ng bersyon maliban sa Excel 365, INDEXAng MATCH ay dapat na ilagay bilang isang CSE array formula sa pamamagitan ng pagpindot sa Ctrl + Shift + Enter. Sa Excel 365 na sumusuporta sa mga dynamic na array ito ay gumagana rin bilang isang regular na formula.

    Para sa detalyadong paliwanag ng mga formula, pakitingnan ang:

    • XLOOKUP na may maraming pamantayan
    • INDEX MATCH formula na may maraming pamantayan

    Paano gamitin ang VLOOKUP para makakuha ng 2nd, 3rd o nth match

    Tulad ng alam mo na, ang Excel VLOOKUP ay makakakuha lang ng isang katumbas na value, mas tiyak, ibinabalik nito ang unang nakitang tugma. Ngunit paano kung mayroong ilang mga tugma sa iyong hanay ng paghahanap at gusto mong makuha ang ika-2 o ika-3 na pagkakataon? Mukhang masalimuot ang gawain, ngunit umiiral ang solusyon!

    Formula 1. Vlookup Nth instance

    Ipagpalagay na mayroon kang mga pangalan ng customer sa isang column, ang mga produktong binili nila sa isa pa, at hinahanap mo upang mahanap ang ika-2 o ika-3 produkto na binili ng isang partikular na customer.

    Ang pinakasimpleng paraan ay ang magdagdag ng helper column sa kaliwa ng talahanayan tulad ng ginawa namin sa unang halimbawa. Ngunit sa pagkakataong ito, ilalagay namin ito sa mga pangalan ng customer at mga numero ng paglitaw tulad ng " John Doe1 ", " John Doe2 ", atbp.

    Upang makuha ang paglitaw, gamitin ang function na COUNTIF na may halo-halong sanggunian sa hanay (ang unang sanggunian ay ganap at ang pangalawa ay kamag-anak tulad ng $B$2:B2). Dahil nagbabago ang relatibong reference batay sa posisyon ng cell kung saan kinopya ang formula, sa row 3 ito ay magiging $B$2:B3, sa row 4 -$B$2:B4, at iba pa.

    Pinagsama-sama sa pangalan ng customer (B2), kinukuha ng formula ang form na ito:

    =B2&COUNTIF($B$2:B2, B2)

    Napupunta ang formula sa itaas sa A2 , at pagkatapos ay kokopyahin mo ito hanggang sa pinakamaraming mga cell kung kinakailangan.

    Pagkatapos nito, ipasok ang target na pangalan at numero ng paglitaw sa magkahiwalay na mga cell (F1 at F2), at gamitin ang formula sa ibaba upang Vlookup ang isang partikular na pangyayari:

    =VLOOKUP(F1&F2, A2:C11, 3, FALSE)

    Formula 2. Vlookup 2nd occurrence

    Kung hinahanap mo ang 2nd instance ng lookup value, maaari mong gawin nang wala ang helper column. Sa halip, dynamic na gawin ang table array sa pamamagitan ng paggamit ng INDIRECT function kasama ng MATCH:

    =VLOOKUP(E1, INDIRECT("A"&(MATCH(E1, A2:A11, 0)+2)&":B11"), 2, FALSE)

    Kung saan:

    • E1 ang lookup value
    • A2:A11 ay ang hanay ng paghahanap
    • B11 ay ang huling (ibaba-kanang) cell ng lookup table

    Pakitandaan na ang ang formula sa itaas ay isinulat para sa isang partikular na kaso kung saan ang mga cell ng data sa lookup table ay nagsisimula sa row 2. Kung ang iyong table ay nasa gitna ng sheet, gamitin ang unibersal na formula na ito, kung saan ang A1 ay ang tuktok na kaliwang cell ng lookup table na naglalaman ng isang column header:

    =VLOOKUP(E1, INDIRECT("A"&(MATCH(E1, A2:A11, 0)+1+ROW(A1))&":B11"), 2, FALSE)

    Paano gumagana ang formula na ito

    Narito ang mahalagang bahagi ng formula na lumilikha ng dynamic na hanay ng vlookup :

    INDIRECT("A"&(MATCH(E1, A2:A11, 0)+2)&":B11")

    Ang MATCH function na na-configure para sa eksaktong tugma (0 sa huling argumento) ay inihahambing ang target na pangalan (E1) laban sa listahan ng mga pangalan (A2:A11) at ibinabalik ang posisyon ng unang natagpuan tugma, na 3sa kaso natin. Ang numerong ito ay gagamitin bilang panimulang row coordinate para sa hanay ng vlookup, kaya nagdagdag kami ng 2 dito (+1 upang ibukod ang unang pagkakataon at +1 upang ibukod ang row 1 na may mga header ng column). Bilang kahalili, maaari mong gamitin ang 1+ROW(A1) upang awtomatikong kalkulahin ang kinakailangang pagsasaayos batay sa posisyon ng row ng header (A1 sa aming kaso).

    Bilang resulta, nakukuha namin ang sumusunod na string ng teksto, na Ang INDIRECT ay nagko-convert sa isang reference ng range:

    INDIRECT("A"&5&":B11") -> A5:B11

    Napupunta ang range na ito sa table_array argument ng VLOOKUP na pinipilit itong magsimulang maghanap sa row 5, na iniiwan ang unang instance ng ang lookup value:

    VLOOKUP(E1, A5:B11, 2, FALSE)

    Paano mag-Vlookup at magbalik ng maramihang value sa Excel

    Ang Excel VLOOKUP function ay idinisenyo upang magbalik ng isang tugma lang. Mayroon bang paraan upang mag-Vlookup ng maraming pagkakataon? Oo, mayroon, kahit na hindi madali. Nangangailangan ito ng pinagsamang paggamit ng ilang function gaya ng INDEX, SMALL at ROW ay isang array formula.

    Halimbawa, makikita sa ibaba ang lahat ng paglitaw ng lookup value na F2 sa lookup range B2:B16 at magbabalik ng marami mga tugma mula sa column C:

    {=IFERROR(INDEX($C$2:$C$11, SMALL(IF($F$1=$B$2:$B$11, ROW($C$2:$C$11)-1,""), ROW()-1)),"")}

    May 2 paraan para ilagay ang formula sa iyong worksheet:

    1. I-type ang formula sa unang cell, pindutin ang Ctrl + Shift + Enter , at pagkatapos ay i-drag ito pababa sa ilan pang mga cell.
    2. Pumili ng ilang katabing cell sa isang column (F1:F11 sa screenshot sa ibaba), i-type ang formula at pindutin ang Ctrl +Shift + Enter para kumpletuhin ito.

    Alinmang paraan, ang bilang ng mga cell kung saan mo ilalagay ang formula ay dapat na katumbas o mas malaki kaysa sa maximum na bilang ng mga posibleng tugma.

    Para sa detalyadong paliwanag ng formula logic at higit pang mga halimbawa, pakitingnan ang Paano mag-VLOOKUP ng maraming value sa Excel.

    Paano mag-Vlookup sa mga row at column (two-way lookup)

    Two-way lookup (aka matrix lookup o 2-dimentional lookup ) ay isang magarbong salita para sa paghahanap ng value sa intersection ng isang tiyak na row at column. Mayroong ilang iba't ibang paraan upang magsagawa ng two-dimensional lookup sa Excel, ngunit dahil ang focus ng tutorial na ito ay sa VLOOKUP function, natural naming gagamitin ito.

    Para sa halimbawang ito, kukunin namin ang ibaba talahanayan na may buwanang benta at gumawa ng VLOOKUP formula upang makuha ang bilang ng mga benta para sa isang partikular na item sa isang partikular na buwan.

    Na may mga pangalan ng item sa A2:A9, mga pangalan ng buwan sa B1:F1, ang target na item sa I1 at ang target na buwan sa I2, ang formula ay sumusunod:

    =VLOOKUP(I1, A2:F9, MATCH(I2, A1:F1, 0), FALSE)

    Paano gumagana ang formula na ito

    Ang core ng formula ay ang karaniwang VLOOKUP function na naghahanap ng eksaktong tugma sa lookup value sa I1. Ngunit dahil hindi namin alam kung saang eksaktong column ang mga benta para sa isang partikular na buwan, hindi namin maibibigay ang numero ng column nang direkta sa argument na col_index_num . Upang mahanap ang column na iyon, ginagamit namin ang sumusunod na MATCHfunction:

    MATCH(I2, A1:F1, 0)

    Isinalin sa English, ang formula ay nagsasabing: hanapin ang I2 value sa A1:F1 at ibalik ang relatibong posisyon nito sa array. Sa pamamagitan ng pagbibigay ng 0 sa 3rd argument, inutusan mo ang MATCH na hanapin ang value na eksaktong katumbas ng lookup value (ito ay tulad ng paggamit ng FALSE para sa range_lookup argument ng VLOOKUP).

    Mula Ang Mar ay nasa ika-4 na column sa lookup array, ang MATCH function ay nagbabalik ng 4, na direktang napupunta sa col_index_num argument ng VLOOKUP:

    VLOOKUP(I1, A2:F9, 4, FALSE)

    Pakiusap bigyang-pansin na kahit na ang mga pangalan ng buwan ay nagsisimula sa column B, ginagamit namin ang A1:I1 para sa lookup array. Ginagawa ito upang ang numerong ibinalik ng MATCH ay tumutugma sa posisyon ng column sa table_array ng VLOOKUP.

    Upang matuto ng higit pang mga paraan upang magsagawa ng matrix lookup sa Excel, pakitingnan ang INDEX MATCH MATCH at iba pang mga formula para sa 2-dimensional lookup.

    Paano gumawa ng maramihang Vlookup sa Excel (nested Vlookup)

    Minsan maaaring mangyari na ang iyong pangunahing table at lookup table ay walang isang column sa karaniwan, na pumipigil sa iyo na gumawa ng Vlookup sa pagitan ng dalawang talahanayan. Gayunpaman, mayroong isa pang talahanayan, na hindi naglalaman ng impormasyong hinahanap mo ngunit may isang karaniwang column na may pangunahing talahanayan at isa pang karaniwang column na may lookup table.

    Sa larawan sa ibaba ay naglalarawan ng sitwasyon:

    Ang layunin ay kopyahin ang mga presyo sa pangunahing talahanayan batay sa Mga Item ID . Ang problema ay ang talahanayan na naglalaman ng mga presyo ay walang Item ID , ibig sabihin ay kailangan nating gumawa ng dalawang Vlookup sa isang formula.

    Para sa kaginhawahan, gumawa tayo ng ilang pinangalanang mga hanay muna:

    • Ang lookup table 1 ay pinangalanang Products (D3:E10)
    • Ang lookup table 2 ay pinangalanang Presyo ( G3:H10 )

    Maaaring nasa pareho o magkaibang worksheet ang mga talahanayan.

    At ngayon, gagawin natin ang tinatawag na double Vlookup , aka nested Vlookup .

    Una, gumawa ng VLOOKUP formula para mahanap ang pangalan ng produkto sa Lookup table 1 (pinangalanang Products ) batay sa item id (A3):

    =VLOOKUP(A3, Products, 2, FALSE)

    Susunod, ilagay ang formula sa itaas sa argument na lookup_value ng isa pang function ng VLOOKUP upang kunin ang mga presyo mula sa Lookup table 2 (pinangalanang Mga presyo ) batay sa pangalan ng produkto na ibinalik ng nested VLOOKUP:

    =VLOOKUP(VLOOKUP(A3, Products, 2, FALSE), Prices, 2, FALSE)

    Ipinapakita ng screenshot sa ibaba ang aming nested na Vlookup formula sa pagkilos:

    Paano mag-Vlookup ng maraming sheet nang dynamic

    Minsan, y Maaari kang magkaroon ng data sa parehong format na nahati sa ilang worksheet. At ang iyong layunin ay kumuha ng data mula sa isang partikular na sheet depende sa key value sa isang partikular na cell.

    Maaaring mas madaling maunawaan ito mula sa isang halimbawa. Sabihin nating, mayroon kang ilang ulat sa mga benta sa rehiyon sa parehong format, at hinahanap mong makuha ang mga numero ng benta para sa isang partikular na produkto sa ilang partikular na

    Si Michael Brown ay isang dedikadong mahilig sa teknolohiya na may hilig sa pagpapasimple ng mga kumplikadong proseso gamit ang mga tool sa software. Sa higit sa isang dekada ng karanasan sa industriya ng tech, hinasa niya ang kanyang mga kasanayan sa Microsoft Excel at Outlook, pati na rin ang Google Sheets at Docs. Ang blog ni Michael ay nakatuon sa pagbabahagi ng kanyang kaalaman at kadalubhasaan sa iba, na nagbibigay ng madaling sundan na mga tip at mga tutorial para sa pagpapabuti ng pagiging produktibo at kahusayan. Isa ka mang batikang propesyonal o baguhan, nag-aalok ang blog ni Michael ng mahahalagang insight at praktikal na payo para masulit ang mahahalagang software tool na ito.