Преглед садржаја
Синтакса МАТЦХ уопште не предвиђа аргумент режима претраге.
КСМАТЦХ природно обрађује низове
За разлику од свог претходника, КСМАТЦХ функција је дизајнирана за динамички Екцел и обрађује низове изворно, без потребе да притиснете Цтрл + Схифт + Ентер . Ово чини формуле много лакшим за прављење и уређивање, посебно када се користи неколико различитих функција заједно. Само упоредите следећа решења:
- Формула осетљива на велика и мала слова: КСМАТЦХ
Водич представља нову Екцел КСМАТЦХ функцију и показује како је она боља од МАТЦХ за решавање неколико уобичајених задатака.
У Екцел 365, функција КСМАТЦХ је додата да замени МАТЦХ функција. Али пре него што почнете да надограђујете своје постојеће формуле, било би мудро да разумете све предности нове функције и како се она разликује од старе.
Укратко, функција КСМАТЦХ је иста као МАТЦХ али је флексибилнија и робустан. Може да тражи и у вертикалним и хоризонталним низовима, да тражи од првог до последњег или од последњег до првог, да пронађе тачна, приближна и делимична подударања и да користи бржи алгоритам бинарне претраге.
Екцел КСМАТЦХ функција
Функција КСМАТЦХ у Екцел-у враћа релативну позицију вредности у низу или опсегу ћелија.
Има следећу синтаксу:
КСМАТЦХ(вредност_потраживања , лоокуп_арраи, [матцх_моде], [сеарцх_моде])Где:
Лоокуп_валуе (обавезно) - вредност коју треба тражити.
Лоокуп_арраи (обавезно) – низ или опсег ћелија у којима се тражи.
Режим_подударања (опционо) – одређује који тип подударања треба користити:
- 0 или изостављено (подразумевано) - потпуно подударање
- -1 - тачно подударање или следећа најмања вредност
- 1 - тачно подударање или следећа највећа вредност
- 2 - подударање џокер знакова ( *, ?)
Режим_претраге (опционо) - одређује правац претраге и алгоритам:
- 1 или изостављен (подразумевано) -подударање или следећи највећи. Не захтева никакво сортирање.
Када је аргумент матцх_моде / матцх_типе подешен на -1:
- МАТЦХ претраге за тачно подударање или следеће највеће. Захтева сортирање низа за тражење у опадајућем редоследу.
- КСМАТЦХ тражи тачно подударање или следеће најмање. Не захтева никакво сортирање.
Тражење џокерских знакова
Да бисте пронашли делимична подударања са КСМАТЦХ, потребно је да поставите аргумент матцх_моде на 2.
Функција МАТЦХ нема посебну опцију режима подударања џокера. У већини случајева, конфигурисаћете га за тачно подударање ( матцх_типе подешено на 0), што такође функционише за претраге са џокер знаковима.
Режим претраге
Као нови КСЛООКУП функција, КСМАТЦХ има посебан аргумент моде_сеарцх_моде који вам омогућава да дефинишете смер претраге :
- 1 или изостављен (подразумевано) - претражите први до -ласт.
- -1 - обрнуто претраживање од последњег до првог.
И изаберите бинарни алгоритам претраге , који је веома брз и ефикасан на сортирани подаци .
- 2 - бинарна претрага података сортираних узлазно.
- -2 - бинарна претрага података сортираних опадајуће.
Бинарна претрага , која се назива и претрага у полуинтервалу или логаритамска претрага , је посебан алгоритам који проналази позицију тражене вредности унутар низа упоређивањем на средњи елемент низа. Бинарна претрага је много бржа од обичнепретрага од првог до последњег.
- -1 - претрага обрнутим редоследом од последњег до првог.
- 2 - бинарно претраживање узлазно. Захтева да лоокуп_арраи буде сортиран у растућем редоследу.
- -2 - бинарно претраживање опадајуће. Захтева да лоокуп_арраи буде сортиран у опадајућем редоследу.
Бинарна претрага је бржи алгоритам који ефикасно ради на сортираним низовима. За више информација погледајте Режим претраге.
Која верзија Екцел-а има КСМАТЦХ?
Функција КСМАТЦХ је доступна само у Екцел-у за Мицрософт 365 и Екцел 2021. У Екцел 2019, Екцел 2016 и ранијим верзијама верзијама, ова функција није подржана.
Основна КСМАТЦХ формула у Екцел-у
Да бисмо добили општу представу о томе за шта је функција способна, хајде да направимо КСМАТЦХ формулу у њеном најједноставнијем облику, дефинишући само прва два потребна аргумента и остављајући опционе на подразумеване вредности.
Претпоставимо да имате листу океана рангирану према њиховој величини (Ц2:Ц6) и желите да пронађете ранг одређеног океана. Да бисте то урадили, једноставно користите име океана, рецимо индијски , као вредност за тражење и целу листу имена као низ за тражење:
=XMATCH("Indian", C2:C6)
Да бисте направили формула је флексибилнија, унесите океан интересовања у неку ћелију, рецимо Ф1:
=XMATCH(F1, C2:C6)
Као резултат, добијате КСМАТЦХ формулу за тражење у вертикалом низу . Излаз је релативна позиција тражене вредности у низу, што је у нашем случајуодговара рангу океана:
Слична формула савршено функционише и за хоризонтални низ . Све што треба да урадите је да прилагодите лоокуп_арраи референцу:
=XMATCH(B5, B1:F1)
Екцел КСМАТЦХ функцију – ствари које треба запамтити
Да бисте ефикасно користили КСМАТЦХ у својим радним листовима и спречили неочекиване резултате, запамтите ове 3 једноставне чињенице:
- Ако постоје два или више појављивања вредности претраживања у низу за тражење, позиција прво подударање се враћа ако је аргумент режим_претраге постављен на 1 или изостављен. Са сеарцх_моде подешеним на -1, функција претражује обрнутим редоследом и враћа позицију последњег подударања као што је приказано у овом примеру.
- Ако је тражена вредност није пронађен , јавља се грешка #Н/А.
- Функција КСМАТЦХ је неосетљива на велика и мала слова по природи и не може да разликује велика и мала слова. Да бисте разликовали мала и велика слова, користите ову КСМАТЦХ формулу која разликује велика и мала слова.
Како користити КСМАТЦХ у Екцелу – примери формула
Следећи примери ће вам помоћи да боље разумете КСМАТЦХ функција и њена практична употреба.
Тачно подударање наспрам приближног подударања
Понашање КСМАТЦХ подударања контролише опциони аргумент матцх_моде :
- 0 или изостављено (подразумевано) - формула тражи само тачно подударање. Ако није пронађено тачно подударање, аВраћа се грешка #Н/А.
- -1 – формула прво тражи тачно подударање, а затим следећу мању ставку.
- 1 – формула прво тражи тачно подударање и затим за следећу већу ставку.
А сада, да видимо како различити начини подударања утичу на резултат формуле. Претпоставимо да желите да сазнате где се одређена област, рецимо 80.000.000 км2, налази међу свим океанима.
Тачно подударање
Ако користите 0 за матцх_моде , ви ћете Добићу грешку #Н/А, јер формула не може да пронађе вредност која је тачно једнака траженој вредности:
=XMATCH(80000000, C2:C6, 0)
Следећа најмања ставка
Ако користите -1 за матцх_моде , формула ће вратити 3, јер је најближе подударање мање од вредности тражења 70,560,000, и то је 3. ставка у низу претраживања:
=XMATCH(80000000, C2:C6, -1)
Следећа највећа ставка
Ако користите 1 за режим_подударања , формула ће дати 2, јер је најближе подударање веће од вредности тражења 85.133.000, што је 2. ставка у низу за тражење :
=XMATCH(80000000, C2:C6, -1)
На слици испод су приказани сви резултати:
Како упарити делимични текст у Екцел-у са џокер знаковима
Функција КСМАТЦХ има посебан режим подударања за џокерске знакове: аргумент матцх_моде постављен на 2.
У режиму подударања џокерских знакова, КСМАТЦХ формула прихвата следећи џокер знак знакови:
- Знак питања (?) за подударање са било којим појединачним знаком.
- Звездица (*) за подударање са било којимниз знакова.
Имајте на уму да џокер знакови раде само са текстом, а не са бројевима.
На пример, да бисте пронашли позицију прве ставке која почиње са „југ“ , формула је:
=XMATCH("south*", B2:B6, 2)
Или можете да унесете свој џокер израз у неку ћелију, рецимо Ф1, и наведете референцу ћелије за аргумент лоокуп_валуе :
=XMATCH(F1, B2:B6, 2)
Са већином Екцел функција, користили бисте тилду (~) да третирате звездицу (~*) или упитник (~?) као буквално знакова, а не џокера. Са КСМАТЦХ, тилда није потребна. Ако не дефинишете режим подударања џокер знакова, КСМАТЦХ ће претпоставити да ? и * су регуларни знакови.
На пример, формула испод ће претражити опсег А2:А7 тачно за знак звездице:
=XMATCH("*", A2:A7)
КСМАТЦХ обрнута претрага за проналажење последњег подударања
У случају да постоји неколико појављивања вредности тражења у низу претраживања, можда ћете понекад морати да добијете позицију последњег појављивања .
Правцем претраге се контролише 4. аргумент КСМАТЦХ-а под називом режим_претраге . Да бисте претраживали обрнутим редоследом, тј. одоздо нагоре у вертикалном низу и здесна налево у хоризонталном низу, режим_претраге треба да буде подешен на -1.
У овом примеру, ми ће вратити позицију последњег записа за одређену вредност тражења (погледајте снимак екрана испод). За ово поставите аргументе каоследи:
- Лоокуп_валуе - циљни продавац у Х1
- Лоокуп_арраи - имена продавача у Ц2:Ц10
- Режим_подударања је 0 или је изостављен (тачно подударање)
- Режим_претраге је -1 (од последњег до првог)
Постављање четири аргументе заједно, добијамо ову формулу:
=XMATCH(H1, C2:C10, 0, -1)
Која враћа број последње продаје коју је извршила Лаура:
Како да упореди две колоне у Екцел-у за подударање
Да бисте упоредили две листе за подударања, можете користити функцију КСМАТЦХ заједно са ИФ и ИСНА:
ИФ( ИСНА( КСМАТЦХ( таргет_лист, сеарцх_лист, 0)), "Нема подударања", "Матцх")На пример, да бисмо упоредили листу 2 у Б2:Б10 са листом 1 у А2:А10, формула има следећи облик:
=IF(ISNA(XMATCH(B2:B10, A2:A9)), "", "Match in List 1")
У овом примеру идентификујемо само подударања, стога је аргумент валуе_иф_труе функције ИФ празан стринг ("").
Унесите горњу формулу у највишу ћелију (Ц2 у нашем случају), притисните Ентер и она ће се аутоматски "пролити" у друге ћелије (тј. т се назива распон просипања):
Како ова формула функционише
У срцу формуле, функција КСМАТЦХ претражује за вредност са Листе 2 унутар Листе 1. Ако је вредност пронађена, враћа се њена релативна позиција, у супротном грешка #Н/А. У нашем случају, резултат КСМАТЦХ-а је следећи низ:
{#N/A;#N/A;2;#N/A;4;#N/A;#N/A;8;#N/A}
Овај низ се „уноси“ у ИСНА функцију да би се проверило да ли има грешака #Н/А.За сваку грешку #Н/А, ИСНА враћа ТРУЕ; за било коју другу вредност - ФАЛСЕ. Као резултат, производи следећи низ логичких вредности, где ТРУЕ представљају неподударања, а ФАЛСЕ представљају подударања:
{TRUE;TRUE;FALSE;TRUE;FALSE;TRUE;TRUE;FALSE;TRUE}
Горењи низ иде на логички тест функције ИФ . У зависности од тога како сте конфигурисали последња два аргумента, формула ће дати одговарајући текст. У нашем случају, то је празан стринг ("") за неподударања ( валуе_иф_труе ) и "Подударање на листи 1" за подударања ( валуе_иф_фалсе ).
Белешка. Ова формула функционише само у Екцел 365 и Екцел 2021 који подржавају динамичке низове. Ако користите Екцел 2019, Екцел 2016 или старију верзију, погледајте друга решења: Како упоредити две колоне у Екцел-у.
ИНДЕКС КСМАТЦХ у Екцел-у
КСМАТЦХ се може користити у комбинацији са функцијом ИНДЕКС за преузимање вредности из друге колоне повезане са вредношћу претраживања, баш као формула ИНДЕКС МАТЦХ. Генерички приступ је следећи:
ИНДЕКС ( повратак _ низ , КСМАТЦХ ( вредност_потражи , низ_потражи )логика је веома јасна и лака за праћење:
Функција КСМАТЦХ израчунава релативну позицију тражене вредности у низу за тражење и прослеђује је аргументу ров_нум аргумента ИНДЕКС. На основу реда број, функција ИНДЕКС враћа вредност из било које колоне коју наведете.
На пример, да бисте потражили областокеана у Е1, можете користити ову формулу:
=INDEX(B2:B6, XMATCH(E1, A2:A6))
ИНДЕКС КСМАТЦХ КСМАТЦХ да извршите 2-димензионално тражење
За тражите у колонама и редовима истовремено, користите ИНДЕКС заједно са две функције КСМАТЦХ. Први КСМАТЦХ ће добити број реда, а други ће преузети број колоне:
ИНДЕКС ( дата , КСМАТЦХ ( лоокуп_валуе , вертицал _ лоокуп_арраи ), КСМАТЦХ ( вредност тражења , хоризонтал _ лоокуп_арраи ))Формула је слична ИНДЕКС МАТЦХ МАТЦХ осим што може да изостави аргумент матцх_моде пошто је подразумевано постављен на потпуно подударање.
На пример, да бисте добили број продаје за дати артикал (Г1) у одређеном месецу (Г2), формула је :
=INDEX(B2:D8, XMATCH(G1, A2:A8), XMATCH(G2, B1:D1))
Где су Б2:Д8 ћелије са подацима искључујући заглавља редова и колона, А2:А8 је листа ставки, а Б1:Д1 су називи месеци.
КСМАТЦХ формула осетљива на велика и мала слова
Као што је већ поменуто, Екцел КСМАТЦХ функција је дизајном неосетљива на велика и мала слова. Да бисте га натерали да разликује велика и мала слова, користите КСМАТЦХ у комбинацији са функцијом ЕКСАЦТ:
МАТЦХ(ТРУЕ, ЕКСАЦТ( лоокуп_арраи , лоокуп_валуе ))Да бисте претраживали у обрнути редослед од последњег ка првом:
МАТЦХ(ТРУЕ, ЕКСАЦТ( лоокуп_арраи , лоокуп_валуе ), 0, -1)Следећи пример показује ова генеричка формула у акцији. Претпоставимо да имате листу ИД-ова производа који разликују велика и мала слова у Б2:Б11. Ви тражите данаћи релативни положај ставке у Е1. Формула која разликује велика и мала слова у Е2 је једноставна као ова:
=XMATCH(TRUE, EXACT(B2:B11, E1))
Како ова формула функционише:
Функција ЕКСАЦТ упоређује вредност тражења са сваком ставком у низу претраживања. Ако су упоређене вредности потпуно једнаке, укључујући велика и мала слова, функција враћа ТРУЕ, ФАЛСЕ у супротном. Овај низ логичких вредности (где ТРУЕ представљају тачна подударања) иде у аргумент лоокуп_арраи аргумента КСМАТЦХ. А пошто је вредност тражења ТРУЕ, функција КСМАТЦХ враћа позицију првог пронађеног тачног подударања или последњег тачног подударања, у зависности од тога како сте конфигурисали аргумент моде_претраге .
КСМАТЦХ вс. МАТЦХ у Екцел
КСМАТЦХ је дизајниран као моћнија и свестранија замена за МАТЦХ, тако да ове две функције имају много заједничког. Међутим, постоје суштинске разлике.
Различито подразумевано понашање
Функција МАТЦХ подразумевано је потпуно подударање или следећа најмања ставка ( матцх_типе постављена на 1 или изостављена).
Функција КСМАТЦХ подразумевано има тачно подударање ( матцх_моде постављено на 0 или изостављено).
Другачије понашање за приближно подударање
Када је матцх_моде / матцх_типе аргумент је подешен на 1:
- МАТЦХ тражи тачно подударање или следеће најмање. Захтева да се низ за тражење сортира у растућем редоследу.
- КСМАТЦХ тражи тачно