Съдържание
В този урок ще намерите редица примери за формули, които демонстрират най-ефективните начини за използване на INDEX в Excel.
От всички функции на Excel, чиято сила често е подценявана и недостатъчно използвана, INDEX определено би се наредила някъде в топ 10. Междувременно тази функция е интелигентна, гъвкава и многофункционална.
И така, какво представлява функцията INDEX в Excel? По същество формулата INDEX връща препратка към клетка в рамките на даден масив или диапазон. С други думи, използвате INDEX, когато знаете (или можете да изчислите) позицията на даден елемент в даден диапазон и искате да получите действителната стойност на този елемент.
Това може да звучи малко тривиално, но след като осъзнаете истинския потенциал на функцията INDEX, тя може да внесе решаващи промени в начина, по който изчислявате, анализирате и представяте данните в работните си листове.
Функция INDEX на Excel - синтаксис и основни приложения
Има две версии на функцията INDEX в Excel - форма на масив и форма на справка. И двете форми могат да се използват във всички версии на Microsoft Excel 365 - 2003.
Форма на масива INDEX
Формата за масив INDEX връща стойността на определен елемент в диапазон или масив въз основа на зададените от вас номера на редове и колони.
INDEX(array, row_num, [column_num])- масив - е диапазон от клетки, именуван диапазон или таблица.
- row_num - е номерът на реда в масива, от който да се върне стойност. Ако се пропусне row_num, се изисква column_num.
- номер на колона - е номерът на колоната, от която да се върне стойност. Ако е пропуснат номер на колона, се изисква номер на ред.
Например, формулата =INDEX(A1:D6, 4, 3)
връща стойността в пресечната точка на 4-ти ред и 3-та колона в диапазона A1:D6, която е стойността в клетка C4.
За да добиете представа как работи формулата INDEX върху реални данни, разгледайте следния пример:
Вместо да въвеждате номерата на редовете и колоните във формулата, можете да предоставите препратките към клетките, за да получите по-универсална формула: =INDEX($B$2:$D$6, G2, G1)
Така тази формула INDEX връща броя на елементите точно в пресечната точка на номера на продукта, посочен в G2 (ред_номер), и номера на седмицата, въведен в клетка G1 (колона_номер).
Съвет. Използването на абсолютни препратки ($B$2:$D$6) вместо относителни препратки (B2:D6) в аргумента за масива улеснява копирането на формулата в други клетки. Като алтернатива можете да преобразувате обхвата в таблица ( Ctrl + T ) и да се позовавате на него чрез името на таблицата.
Форма за масив INDEX - неща, които трябва да запомните
- Ако аргументът за масив се състои само от един ред или колона, можете да посочите или да не посочите съответния аргумент row_num или column_num.
- Ако аргументът array включва повече от един ред и row_num е пропуснат или е зададен на 0, функцията INDEX връща масив от цялата колона. По същия начин, ако array включва повече от една колона и аргументът column_num е пропуснат или е зададен на 0, формулата INDEX връща целия ред. Ето пример за формула, който демонстрира това поведение.
- Аргументите ред_номер и колона_номер трябва да се отнасят до клетка в масив; в противен случай формулата INDEX ще върне грешка #REF!.
Референтен формуляр INDEX
Референтната форма на функцията INDEX на Excel връща референтната клетка в пресечната точка на зададените ред и колона.
INDEX(reference, row_num, [column_num], [area_num] )- справка - е един или няколко диапазона.
Ако въвеждате повече от един диапазон, разделете диапазоните със запетаи и оградете референтния аргумент в скоби, например (A1:B5, D1:F5).
Ако всеки диапазон в референцията съдържа само един ред или колона, съответният аргумент row_num или column_num не е задължителен.
- row_num - номера на реда в диапазона, от който да се върне референция към клетка, подобно на формата за масив.
- номер на колона - номера на колоната, от която се връща референция към клетка, също работи подобно на формата за масив.
- area_num - незадължителен параметър, който указва кой диапазон от референтния аргумент да се използва. Ако се пропусне, формулата INDEX ще върне резултата за първия диапазон, посочен в референцията.
Например, формулата =INDEX((A2:D3, A5:D7), 3, 4, 2)
връща стойността на клетка D7, която се намира в пресечната точка на 3-ти ред и 4-та колона във втората област (A5:D7).
Референтен формуляр INDEX - неща, които трябва да запомните
- Ако аргументът row_num (номер на ред) или column_num (номер на колона) е равен на нула (0), формулата INDEX връща референцията за цялата колона или ред, съответно.
- Ако са пропуснати и ред_номер, и колона_номер, функцията INDEX връща областта, посочена в аргумента area_num.
- Всички аргументи _num (row_num, column_num и area_num) трябва да се отнасят до клетка в рамките на препратка; в противен случай формулата INDEX ще върне грешка #REF!.
И двете формули INDEX, които разгледахме досега, са много прости и само илюстрират концепцията. Вашите реални формули вероятно ще бъдат много по-сложни, затова нека разгледаме няколко най-ефективни приложения на INDEX в Excel.
Как да използвате функцията INDEX в Excel - примери за формули
Може би няма много практически приложения на Excel INDEX сам по себе си, но в комбинация с други функции, като MATCH или COUNTA, той може да създаде много мощни формули.
Източник на данни
За всички формули INDEX (с изключение на последната) ще използваме данните по-долу. За удобство те са организирани в таблица с име SourceData .
Използването на таблици или именувани диапазони може да направи формулите малко по-дълги, но също така ги прави значително по-гъвкави и по-добре четими. За да коригирате всяка формула INDEX за работните си листове, трябва да промените само едно име и това напълно компенсира по-голямата дължина на формулата.
Разбира се, нищо не ви пречи да използвате обичайни диапазони, ако искате. В този случай просто заменете името на таблицата SourceData със съответния референтен обхват.
1. Получаване на N-тия елемент от списъка
Това е основното използване на функцията INDEX и най-простата формула за изпълнение. За да извлечете определен елемент от списъка, просто напишете =INDEX(обхват, n)
където обхват е диапазон от клетки или именуван диапазон, и n е позицията на елемента, който искате да получите.
Когато работите с таблици на Excel, можете да изберете колоната с помощта на мишката и Excel ще изтегли името на колоната заедно с името на таблицата във формулата:
За да получите стойността на клетката в пресечната точка на даден ред и колона, използвате същия подход с единствената разлика, че посочвате и двете - номера на реда и номера на колоната. Всъщност вече видяхте такава формула в действие, когато обсъждахме формата на масива INDEX.
И ето още един пример. В нашата примерна таблица, за да намерите втората по големина планета в Слънчевата система, сортирате таблицата по Диаметър и използвайте следната формула INDEX:
=INDEX(SourceData, 2, 3)
Масив
е името на таблицата или препратка към диапазон, SourceData в този пример.Ред_номер
е 2, тъй като търсите втория елемент в списъка, който се намира във вторияColumn_num
е 3, защото Диаметър е третата колона в таблицата.
Ако искате да върнете името на планетата, а не нейния диаметър, променете column_num на 1. И естествено, можете да използвате препратка към клетка в аргументите row_num и/или column_num, за да направите формулата си по-гъвкава, както е показано на снимката по-долу:
2. получаване на всички стойности в ред или колона
Освен за извличане на единична клетка, функцията INDEX може да върне масив от стойности от цял ред или колона За да получите всички стойности от определена колона, трябва да пропуснете аргумента row_num или да го зададете на 0. По същия начин, за да получите целия ред, трябва да подадете празна стойност или 0 в column_num.
Такива формули INDEX трудно могат да се използват самостоятелно, тъй като Excel не може да побере масива от стойности, върнати от формулата, в една клетка и вместо това ще получите грешка #VALUE!. Ако обаче използвате INDEX в комбинация с други функции, като SUM или AVERAGE, ще получите страхотни резултати.
Например можете да използвате следната формула, за да изчислите средната температура на планетата в Слънчевата система:
=AVERAGE(INDEX(SourceData, , 4))
В горната формула аргументът column_num е 4, защото Температура в четвъртата колона на нашата таблица. Параметърът row_num е пропуснат.
По подобен начин можете да намерите минималните и максималните температури:
=MAX(INDEX(SourceData, , 4))
=MIN(INDEX(SourceData, , 4))
И изчислете общата маса на планетата (масата е втората колона в таблицата):
=SUM(INDEX(SourceData, , 2))
От практическа гледна точка функцията INDEX в горната формула е излишна. Можете просто да напишете =AVERAGE(диапазон)
или =SUM(обхват)
и получавате същите резултати.
Когато работите с реални данни, тази функция може да се окаже полезна като част от по-сложни формули, които използвате за анализ на данни.
3. Използване на INDEX с други функции (SUM, AVERAGE, MAX, MIN)
От предишните примери може да сте останали с впечатлението, че формулата INDEX връща стойности, но в действителност тя връща справка този пример демонстрира истинската същност на функцията INDEX на Excel.
Тъй като резултатът от формулата INDEX е препратка, можем да я използваме в други функции, за да направим динамичен обхват . Звучи объркващо? Следната формула ще изясни всичко.
Да предположим, че имате формула =СРЕДНА СТОЙНОСТ(A1:A10)
вместо да записвате диапазона директно във формулата, можете да замените A1 или A10, или и двете, с функциите INDEX, както следва:
=СРЕДНА СТОЙНОСТ(A1 : INDEX(A1:A20,10))
И двете горепосочени формули ще дадат един и същ резултат, тъй като функцията INDEX също връща препратка към клетка A10 (ред_номер е зададен на 10, кол_номер е пропуснат). Разликата е, че обхватът на формулата AVERAGE / INDEX е динамичен и след като промените аргумента ред_номер в INDEX, обхватът, обработван от функцията AVERAGE, ще се промени и формулата ще върне различен резултат.
На пръв поглед маршрутът на формулата INDEX изглежда прекалено сложен, но той има практическо приложение, както е показано в следващите примери.
Пример 1. Изчисляване на средната стойност на първите N елемента в списъка
Да речем, че искате да знаете средния диаметър на N-те най-големи планети в нашата система. Диаметър колона от най-голямата към най-малката и използвайте следната формула Средна стойност / Индекс:
=AVERAGE(C5 : INDEX(SourceData[Diameter], B1))
Пример 2. Сумиране на елементите между посочените два елемента
В случай че искате да определите горната и долната граница на елементите във формулата си, просто трябва да използвате две функции INDEX, за да върнете първия и последния елемент, който искате.
Например следната формула връща сумата на стойностите в Диаметър колона между двата елемента, посочени в клетки B1 и B2:
=SUM(INDEX(SourceData[Diameter],B1) : INDEX(SourceData[Diameter], B2))
4. формула INDEX за създаване на динамични диапазони и падащи списъци
Както често се случва, когато започнете да организирате данни в работен лист, може да не знаете колко записи ще имате в крайна сметка. Това не е случаят с нашата таблица за планетите, която изглежда пълна, но кой знае...
Така или иначе, ако броят на елементите в дадена колона се променя, например от А1 до А n , може да искате да създадете динамичен именуван диапазон, който да включва всички клетки с данни. При това искате диапазонът да се коригира автоматично, когато добавяте нови елементи или изтривате някои от съществуващите. Например, ако в момента имате 10 елемента, вашият именуван диапазон е A1:A10. Ако добавите нов елемент, именуваният диапазон автоматично се разширява до A1:A11, а ако промените решението си и изтриете новодобавените данни,обхватът автоматично се връща към A1:A10.
Основното предимство на този подход е, че не е необходимо постоянно да актуализирате всички формули в работната си книга, за да се уверите, че се отнасят до правилните диапазони.
Един от начините за определяне на динамичен обхват е използването на функцията OFFSET на Excel:
=OFFSET(Sheet_Name!$A$1, 0, 0, COUNTA(Sheet_Name!$A:$A), 1)
Друго възможно решение е да използвате INDEX на Excel заедно с COUNTA:
=Sheet_Name!$A$1:INDEX(Sheet_Name!$A:$A, COUNTA(Sheet_Name!$A:$A))
И в двете формули A1 е клетката, съдържаща първия елемент от списъка, и динамичният обхват, създаден от двете формули, ще бъде идентичен.
Разликата е в подходите. Докато функцията OFFSET се отдалечава от началната точка с определен брой редове и/или колони, функцията INDEX намира клетка в пресечната точка на определен ред и колона. Функцията COUNTA, използвана и в двете формули, получава броя на непразните клетки в интересуващата ни колона.
В този пример в колона A има 9 непразни клетки, така че COUNTA връща 9. Следователно INDEX връща $A$9, която е последната използвана клетка в колона A (обикновено INDEX връща стойност, но в тази формула операторът за препратка (:) го принуждава да връща препратка). И тъй като $A$1 е нашата начална точка, крайният резултат от формулата е диапазонът $A$1:$A$9.
Следващата снимка демонстрира как можете да използвате такава формула за индекс, за да създадете динамичен падащ списък.
Съвет. Най-лесният начин за създаване на динамично актуализиран падащ списък е да направите именуван списък въз основа на таблица. В този случай няма да са ви необходими сложни формули, тъй като таблиците на Excel сами по себе си са динамични диапазони.
Можете също така да използвате функцията INDEX за създаване на зависими падащи списъци и в следващия урок са обяснени стъпките: Създаване на каскаден падащ списък в Excel.
5. мощни Vlookups с INDEX / MATCH
Извършване на вертикални търсения - тук функцията INDEX наистина блести. Ако някога сте се опитвали да използвате функцията VLOOKUP на Excel, добре знаете за многобройните ѝ ограничения, като например невъзможността да се изтеглят стойности от колони вляво от колоната за търсене или ограничението от 255 символа за стойност за търсене.
Връзката INDEX / MATCH е по-добра от VLOOKUP в много отношения:
- Няма проблеми с левите vlookups.
- Няма ограничение за размера на стойността за търсене.
- Не се изисква сортиране (VLOOKUP с приблизително съвпадение изисква сортиране на колоната за търсене във възходящ ред).
- Можете свободно да вмъквате и премахвате колони в дадена таблица, без да актуализирате всяка свързана формула.
- И не на последно място, INDEX / MATCH не забавя работата на Excel, както правят многобройните Vlookups.
Използвате INDEX / MATCH по следния начин:
=INDEX ( колона, за да върнете стойност от , (MATCH ( стойност за търсене , колона, по която да се търси , 0))Например, ако обърнем таблицата на източника така, че Име на планетата се превърне в най-дясната колона, формулата INDEX / MATCH все още извлича безпроблемно съответстваща стойност от лявата колона.
За повече съвети и примерни формули вижте урока за Excel INDEX / MATCH.
6. Excel INDEX формула за получаване на 1 обхват от списък с обхвати
Друга интелигентна и мощна употреба на функцията INDEX в Excel е възможността за получаване на един диапазон от списък с диапазони.
Да предположим, че имате няколко списъка с различен брой елементи във всеки от тях. Вярвате или не, можете да изчислите средната стойност или да съберете стойностите във всеки избран диапазон с една формула.
Първо, създавате именуван диапазон за всеки списък; нека той бъде ПланетиD и MoonsD в този пример:
Надявам се, че горното изображение обяснява причините за имената на диапазоните : ) BTW, the Луни таблицата далеч не е пълна, в нашата Слънчева система са известни 176 естествени луни, като само Юпитер има 63 в момента и продължава да брои. За този пример избрах на случаен принцип 11, е... може би не съвсем на случаен принцип - луни с най-красивите имена : )
Моля, извинете за отклонението и се върнете към формулата INDEX. Ако приемем, че ПланетиD е вашият обхват 1 и MoonsD е диапазон 2, а клетка B1 е мястото, където сте поставили номера на диапазона, можете да използвате следната формула Index, за да изчислите средната стойност на стойностите в избрания именуван диапазон:
=AVERAGE(INDEX((PlanetsD, MoonsD), , , B1))
Обърнете внимание, че сега използваме референтната форма на функцията INDEX, а числото в последния аргумент (area_num) указва на формулата кой диапазон да избере.
На снимката на екрана по-долу area_num (клетка B1) е зададена на 2, така че формулата изчислява средния диаметър на Луни защото обхватът MoonsD е на второ място в аргумента за препратка.
Ако работите с множество списъци и не искате да се занимавате с помнене на свързаните с тях номера, можете да използвате вложена функция IF, която да направи това вместо вас:
=AVERAGE(INDEX((PlanetsD, MoonsD), , , IF(B1="планети", 1, IF(B1="луни", 2))))
Във функцията IF използвате някои прости и лесни за запомняне имена на списъци, които искате потребителите да въвеждат в клетка B1 вместо числа. Моля, имайте предвид, че за да работи формулата правилно, текстът в B1 трябва да бъде точно същият (без значение на големи и малки букви) като в параметрите на IF, в противен случай вашата формула Index ще хвърли грешка #VALUE.
За да направите формулата още по-удобна за потребителя, можете да използвате Data Validation (валидиране на данни), за да създадете падащ списък с предварително зададени имена, за да предотвратите правописни грешки и грешки в печата:
И накрая, за да направите формулата си INDEX абсолютно съвършена, можете да я включите във функцията IFERROR, която ще подкани потребителя да избере елемент от падащия списък, ако все още не е направен избор:
=IFERROR(AVERAGE(INDEX((PlanetsD, MoonsD), , , IF(B1="планета", 1, IF(B1="луна", 2)))), "Моля, изберете списъка!")
Ето как се използват формулите INDEX в Excel. Надявам се, че тези примери са ви показали начин да използвате потенциала на функцията INDEX във вашите работни листове. Благодаря ви, че прочетохте!