Преглед садржаја
Водич приказује неколико различитих формула за обављање дводимензионалног претраживања у Екцел-у. Само погледајте алтернативе и изаберите своју омиљену :)
Када тражите нешто у својим Екцел табелама, већину времена тражите вертикално у колонама или хоризонтално у редовима. Али понекад морате да погледате и редове и колоне. Другим речима, циљ вам је да пронађете вредност на пресеку одређеног реда и колоне. Ово се зове проналажење матрице (ака 2-димензионално или 2-смерно тражење ), и овај водич показује како се то ради на 4 различита начина.
Формула ИНДЕКС МАТЦХ МАТЦХ у Екцел-у
Најпопуларнији начин да се изврши двосмерно тражење у Екцел-у је коришћење ИНДЕКС МАТЦХ МАТЦХ. Ово је варијација класичне формуле ИНДЕКС МАТЦХ којој додајете још једну функцију МАТЦХ да бисте добили и бројеве реда и колоне:
ИНДЕКС ( податак_низ, МАТЦХ ( влоокуп_валуе, опсег_колоне за претрагу, 0), МАТЦХ ( хлоокуп валуе, опсег_реда_лоокупа, 0))Као пример, направимо формулу за повлачење популације одређене животиње у датој години из табеле испод. За почетак, дефинишемо све аргументе:
- Низ_података - Б2:Е4 (ћелије са подацима, не укључујући заглавља редова и колона)
- Влоокуп_валуе - Х1 (циљна животиња)
- опсег_колоне за тражење - А2:А4 (заглавља редова: имена животиња) -А3:А4
- Хлоокуп_валуе - Х2 (циљна година)
- Лоокуп_ров_ранге - Б1:Е1 (заглавља колона: године)
Скупите све аргументе и добићете ову формулу за двосмерно тражење:
=INDEX(B2:E4, MATCH(H1, A2:A4, 0), MATCH(H2, B1:E1, 0))
Како ова формула функционише
Иако може изгледати мало на први поглед сложена, логика формуле је заиста јасна и лако разумљива. Функција ИНДЕКС преузима вредност из низа података на основу бројева редова и колона, а две функције МАТЦХ обезбеђују те бројеве:
INDEX(B2:E4, row_num, column_num)
Овде користимо могућност МАТЦХ(лоокуп_валуе, лоокуп_арраи, [матцх_типе]) да врати релативну позицију од лоокуп_валуе у лоокуп_арраи .
Дакле, да бисмо добили број реда, тражимо за животињу од интереса (Х1) преко заглавља редова (А2:А4):
MATCH(H1, A2:A4, 0)
Да бисмо добили број колоне, тражимо циљну годину (Х2) у заглављима колона (Б1:Е1):
MATCH(H2, B1:E1, 0)
У оба случаја тражимо тачно подударање постављањем 3. аргумента на 0.
У овом примеру, први МАТЦХ враћа 2 јер се наша влоокуп вредност (поларни медвед) налази у А3, што је 2. ћелија у А2:А4. Други МАТЦХ враћа 3 јер се хлоокуп вредност (2000) налази у Д1, што је трећа ћелија у Б1:Е1.
С обзиром на горе наведено, формула се своди на:
INDEX(B2:E4, 2, 3)
И вратите вредност на пресеку 2. реда и 3. колоне у низу података Б2:Е4, што јевредност у ћелији Д3.
ВЛООКУП и МАТЦХ формула за двосмерно тражење
Други начин да се изврши дводимензионално тражење у Екцел-у је коришћење комбинације функција ВЛООКУП и МАТЦХ:
За нашу табелу узорка , формула има следећи облик:
=VLOOKUP(H1, A2:E4, MATCH(H2, A1:E1, 0), FALSE)
Где:
- Табле_арраи - А2:Е4 (ћелије са подацима укључујући заглавља редова)
- Влоокуп_валуе - Х1 (циљна животиња)
- Хлоокуп_валуе - Х2 (циљна година)
- Лоокуп_ров_ранге - А1:Е1 (заглавља колона: године)
Како ова формула функционише
Срж формуле је функција ВЛООКУП конфигурисана за тачно подударање (последњи аргумент постављено на ФАЛСЕ), који тражи тражену вредност (Х1) у првој колони низа табеле (А2:Е4) и враћа вредност из друге колоне у истом реду. Да бисте одредили из које колоне желите да вратите вредност, користите функцију МАТЦХ која је такође конфигурисана за тачно подударање (последњи аргумент постављен на 0):
MATCH(H2, A1:E1, 0)
МАТЦХ тражи вредност у Х2 преко заглавља колона (А1:Е1) и враћа релативну позицију пронађене ћелије. У нашем случају, циљна година (2010) налази се у Е1, која је 5. у низу претраживања. Дакле, број 5 иде у цол_индек_нум аргумент ВЛООКУП-а:
VLOOKUP(H1, A2:E4, 5, FALSE)
ВЛООКУП га узима одатле, проналазитачно подударање за његову вредност тражења у А2 и враћа вредност из 5. колоне у истом реду, а то је ћелија Е2.
Важна напомена! Да би формула исправно функционисала, табле_арраи (А2:Е4) ВЛООКУП и лоокуп_арраи МАТЦХ (А1:Е1) морају имати исти број колона, у супротном број прослеђен од стране МАТЦХ до цол_индек_нум ће бити нетачно (неће одговарати позицији колоне у табле_арраи ).
КСЛООКУП функција за гледање у редовима и колонама
Недавно је Мицрософт представио још једну функцију у Екцел-у која треба да замени све постојеће функције тражења као што су ВЛООКУП, ХЛООКУП и ИНДЕКС МАТЦХ. Између осталог, КСЛООКУП може да погледа пресек одређеног реда и колоне:
КСЛООКУП( влоокуп_валуе , влоокуп_цолумн_ранге , КСЛООКУП( хлоокуп_валуе , хлоокуп_ров_ранге , дата_арраи ))За наш пример скупа података, формула иде на следећи начин:
=XLOOKUP(H1, A2:A4, XLOOKUP(H2, B1:E1, B2:E4))
Напомена. Тренутно је КСЛООКУП бета функција, која је доступна само претплатницима на Оффице 365 који су део програма Оффице Инсидерс.
Како ова формула функционише
Формула користи способност КСЛООКУП-а да врати цео ред или колону. Унутрашња функција тражи циљну годину у реду заглавља и враћа све вредности за ту годину (у овом примеру, за 1980. годину). Те вредности иду у ретурн_арраи аргумент спољашњегКСЛООКУП:
XLOOKUP(H1, A2:A4, {22000;2
=SUMPRODUCT((A2:A4=H1) * (B1:E1=H2) * B2:E4)
;700}))
Спољна функција КСЛООКУП тражи циљну животињу у заглављима колона и враћа вредност на истој позицији из ретурн_арраи-а.
СУМПРОИЗВОД формула за два -ваи лоокуп
Функција СУМПРОДУЦТ је попут швајцарског ножа у Екцел-у – може да уради много ствари изван своје предвиђене сврхе, посебно када је у питању процена више критеријума.
Да бисте потражили два критеријуми, у редовима и колонама, користите ову генеричку формулу:
СУМПРОДУЦТ( опсег_колоне_прегледа = вредност_влоокупа ) * ( опсег_реда_прегледавања = вредност_прегледавања ), дата_арраи )Да бисте извршили двосмерно тражење у нашем скупу података, формула иде на следећи начин:
=SUMPRODUCT((A2:A4=H1) * (B1:E1=H2), B2:E4)
Доња синтакса ће такође радити:
=SUMPRODUCT((A2:A4=H1) * (B1:E1=H2) * B2:E4)
Како ова формула функционише
У срцу формуле, упоређујемо две вредности претраживања са заглављем реда и колоне (циљна животиња у Х1 са свим животињама имена у А2:А4 и циљну годину у Х2 у односу на све године у Б1:Е1):
(A2:A4=H1) * (B1:E1=H2)
Ово рес. даје 2 низа вредности ТРУЕ и ФАЛСЕ, где ТРУЕ представљају подударања:
{FALSE;FALSE;TRUE} * {FALSE,TRUE,FALSE,FALSE}
Операција множења приморава вредности ТРУЕ и ФАЛСЕ у 1 и 0 и производи дводимензионални низ од 4 колоне и 3 реда (редови су одвојени тачком и зарезом, а свака колона података зарезом):
{0,0,0,0;0,0,0,0;0,1,0,0}
Функција СУМПРОДУЦТ множи елементе горњег низа ставкамаБ2:Е4 на истим позицијама:
{0,0,0,0;0,0,0,0;0,1,0,0} * {22000,13800,8500,3500;25000,23000,22000,20000;700,2000,2300,2500}
И пошто множење са нулом даје нулу, преживи само ставка која одговара 1 у првом низу:
SUMPRODUCT({0,0,0,0;0,0,0,0;0,2000,0,0})
Коначно, СУМПРОДУЦТ сабира елементе резултујућег низа и враћа вредност од 2000.
Напомена. Ако ваша табела има више од једног заглавља реда и/или колоне са истим именом, коначни низ ће садржати више од једног броја осим нуле и сви ти бројеви ће бити сабрани. Као резултат, добићете збир вредности које испуњавају оба критеријума. То је оно по чему се формула СУМПРОДУЦТ разликује од ИНДЕКС МАТЦХ МАТЦХ и ВЛООКУП, који враћају прво пронађено подударање.
Тражење матрице са именованим опсезима (експлицитни пресек)
Још један невероватно једноставан начин да се уради матрично тражење у Екцел-у је коришћењем именованих опсега. Ево како:
Део 1: Именујте колоне и редове
Најбржи начин да именујете сваки ред и сваку колону у табели је овај:
- Изаберите целу табелу (А1:Е4 у нашем случају).
- На картици Формуле , у групи Дефинисана имена кликните на Креирај из избора или притисните пречицу Цтрл + Схифт + Ф3.
- У дијалогу Креирај имена из избора изаберите Горњи ред и лево колону, и кликните на ОК.
Ово аутоматски креира имена на основу заглавља редова и колона. Међутим, постоји неколико упозорења:
- Ако ваша колона и/илизаглавља редова су бројеви или садрже специфичне знакове који нису дозвољени у именима Екцел-а, називи за такве колоне и редове неће бити креирани. Да бисте видели листу креираних имена, отворите Менаџер имена ( Цтрл + Ф3 ). Ако нека имена недостају, дефинишите их ручно као што је објашњено у Како да именујете опсег у Екцел-у.
- Ако неки од ваших заглавља редова или колона садрже размаке, размаци ће бити замењени подвлакама, на пример, Полар_беар .
За нашу табелу узорка, Екцел је аутоматски креирао само имена редова. Имена колона се морају креирати ручно јер су заглавља колона бројеви. Да бисте ово превазишли, можете једноставно да предбројите бројеве са доњом цртом, као што је _1990 .
Као резултат, имамо следеће именоване опсеге:
Део 2 : Направите формулу за тражење матрице
Да бисте извукли вредност на пресеку датог реда и колоне, само унесите једну од следећих генеричких формула у празну ћелију:
= име_реда име_колонеИли обрнуто:
= име_колоне назив_редаНа пример, да добијете популацију плавих китова 1990. , формула је једноставна као:
=Blue_whale _1990
Ако су некоме потребна детаљнија упутства, следећи кораци ће вас провести кроз процес:
- У ћелији где желите да се појави резултат, откуцајте знак једнакости (=).
- Почните да куцате име циљног реда, рецимо, Плави_кит . Послеунели сте неколико знакова, Екцел ће приказати сва постојећа имена која одговарају вашем уносу. Двапут кликните на жељено име да бисте га унели у формулу:
- Након назива реда, откуцајте размак , који ради као оператор пресека у овом случају.
- Унесите назив циљне колоне ( _1990 у нашем случају).
- Чим се унесу и називи редова и колона, Екцел ће истаћи одговарајући ред и колону у вашој табели, а ви притиснете Ентер да бисте довршили формулу:
Ваше тражење матрице је завршено, а снимак екрана испод показује резултат:
Тако можете тражити редове и колоне у Екцел-у. Захваљујем вам на читању и надам се да се видимо на нашем блогу следеће недеље!
Доступна преузимања
2-димензионални пример радне свеске за претрагу