Съдържание
В този урок за Excel INDIRECT се обяснява синтаксисът на функцията, основните ѝ приложения и се предоставят редица примери за формули, които показват как да използвате INDIRECT в Excel.
В Microsoft Excel съществуват много функции, като някои от тях са лесни за разбиране, други изискват дълго обучение, а първите се използват по-често от вторите. И все пак функцията INDIRECT на Excel е една от тях. Тази функция на Excel не извършва никакви изчисления, нито оценява някакви условия или логически тестове.
Тогава какво представлява функцията INDIRECT в Excel и за какво я използвам? Това е много добър въпрос и се надяваме, че ще получите изчерпателен отговор след няколко минути, когато приключите с четенето на този урок.
Функция INDIRECT на Excel - синтаксис и основни приложения
Както подсказва името ѝ, функцията INDIRECT на Excel се използва за непряко позоваване на клетки, диапазони, други листове или работни книги. С други думи, функцията INDIRECT ви позволява да създавате динамично позоваване на клетки или диапазони, вместо да ги кодирате. В резултат на това можете да променяте позоваване в рамките на формула, без да променяте самата формула. Освен това тези непреки позовавания няма да се променят, когато се появят нови редове или колони.се вмъкват в работния лист или когато изтривате съществуващи такива.
Всичко това може да е по-лесно за разбиране от пример. За да можете да напишете формула, дори и най-простата, трябва да знаете аргументите на функцията, нали? Затова нека първо разгледаме набързо синтаксиса на Excel INDIRECT.
Синтаксис на функцията INDIRECT
Функцията INDIRECT в Excel връща препратка към клетка от текстов низ. Тя има два аргумента, като първият е задължителен, а вторият - незадължителен:
INDIRECT(ref_text, [a1])ref_text - е препратка към клетка или препратка към клетка под формата на текстов низ, или към именуван диапазон.
a1 - е логическа стойност, която определя какъв тип препратка се съдържа в аргумента ref_text:
- Ако е TRUE или е пропуснато, ref_text се интерпретира като препратка към клетка в стил А1.
- Ако е FALSE, ref_text се третира като референция R1C1.
Макар че типът на препратката R1C1 може да бъде полезен в определени ситуации, вероятно ще искате да използвате добре познатите препратки A1 през повечето време. Така или иначе, почти всички формули INDIRECT в този урок ще използват препратки A1, така че ще пропуснем втория аргумент.
Основно използване на функцията INDIRECT
За да вникнем в същността на функцията, нека напишем проста формула, която демонстрира как се използва INDIRECT в Excel.
Да предположим, че в клетка А1 имате число 3, а в клетка A1 в клетка C1. Сега поставете формулата =INDIRECT(C1)
във всяка друга клетка и вижте какво ще се случи:
- Функцията INDIRECT се отнася до стойността в клетка C1, която е A1.
- Функцията се пренасочва към клетка A1, където избира стойността, която да върне, а именно числото 3.
В този пример функцията INDIRECT всъщност прави следното. преобразуване на текстов низ в препратка към клетка .
Ако смятате, че това все още няма голям практически смисъл, моля, изчакайте и ще ви покажа още няколко формули, които разкриват истинската сила на функцията INDIRECT на Excel.
Как да използвате INDIRECT в Excel - примери за формули
Както е показано в горния пример, можете да използвате функцията INDIRECT на Excel, за да поставите адреса на една клетка в друга като обикновен текстов низ и да получите стойността на първата клетка чрез препратка към втората. Този тривиален пример обаче не е нищо повече от намек за възможностите на INDIRECT.
Когато работите с реални данни, функцията INDIRECT може да превърне всеки текстов низ в препратка, включително и много сложни низове, които изграждате, като използвате стойностите на други клетки и резултатите, върнати от други формули на Excel. Но нека не поставяме каруцата пред коня и да разгледаме няколко непреки формули на Excel, една по една.
Създаване на непреки препратки от стойности на клетки
Както си спомняте, функцията INDIRECT на Excel позволява да се използват стиловете за справка A1 и R1C1. Обикновено не можете да използвате едновременно и двата стила в един лист, а можете само да превключвате между двата типа справки чрез Файл> Опции> Формули > Поле за отметка R1C1 . Това е причината, поради която потребителите на Excel рядко обмислят използването на R1C1 като алтернативен подход за препращане.
Във формула INDIRECT можете да използвате всеки от двата типа справки на един и същи лист, ако желаете. Преди да продължим, може би ще искате да знаете каква е разликата между стиловете на справки A1 и R1C1.
Стил А1 е обичайният тип препратка в Excel, който се отнася за колона, последвана от номер на ред. Например B2 се отнася за клетката в пресечната точка на колона B и ред 2.
Стил R1C1 е противоположният тип препратка - редове, последвани от колони, с което се свиква известно време : ) Например R4C1 се отнася за клетка A4, която е в ред 4, колона 1 на листа. Ако след буквата няма цифра, значи се отнасяте за същия ред или колона.
А сега нека видим как функцията INDIRECT обработва препратките към A1 и R1C1:
Както виждате на горната снимка, три различни косвени формули дават един и същ резултат. Вече разбрахте ли защо? Обзалагам се, че сте : )
- Формула в клетка D1:
=INDIRECT(C1)
Това е най-лесният вариант. Формулата се отнася до клетка C1, извлича нейната стойност - текстов низ A2 , превръща го в референция към клетка, отива в клетка А2 и връща нейната стойност, която е 222.
- Формула в клетка D3:
=INDIRECT(C3,FALSE)
FALSE във втория аргумент показва, че препратената стойност (C3) трябва да се третира като препратка към клетка R1C1, т.е. номер на ред, последван от номер на колона. Следователно нашата формула INDIRECT интерпретира стойността в клетка C3 (R2C1) като препратка към клетката в съединението на ред 2 и колона 1, която е клетка A2.
Създаване на непреки препратки от стойности на клетки и текст
Подобно на начина, по който създадохме препратки от стойности на клетки, можете да комбинирате текстов низ и препратка към клетката в рамките на формулата INDIRECT, свързани заедно с оператора за конкатенация (&).
В следния пример формулата: =INDIRECT("B"&C2) връща стойност от клетка B2 въз основа на следната логическа верига:
Функцията INDIRECT конкатенира елементите в аргумента ref_text - текст B и стойността в клетка C2 -> стойността в клетка C2 е числото 2, което прави препратка към клетка B2 -> формулата отива в клетка B2 и връща нейната стойност, която е числото 10.
Използване на функцията INDIRECT с именувани диапазони
Освен че можете да правите препратки от стойности на клетки и текст, можете да използвате функцията INDIRECT на Excel за препратки към именувани диапазони .
Да предположим, че имате следните именувани диапазони във вашия лист:
- Ябълки - B2:B6
- Банани - C2:C6
- Лимони - D2:D6
За да създадете динамична препратка в Excel към някой от посочените по-горе диапазони, просто въведете името му в някоя клетка, например G1, и направете препратка към тази клетка чрез непряка формула. =INDIRECT(G1)
.
Сега можете да направите още една крачка напред и да имплантирате тази ИНДИРЕКТНА формула в други функции на Excel, за да изчислите сумата и средната стойност на стойностите в даден именуван диапазон или да намерите максималната/минималната стойност в рамките на диапазона:
=СУМА(ИНДИРЕКТЕН(G1))
=СРЕДНА СТОЙНОСТ(INDIRECT(G1))
=MAX(INDIRECT(G1))
=MIN(INDIRECT(G1))
След като вече имате обща представа как да използвате функцията INDIRECT в Excel, можем да експериментираме с по-мощни формули.
INDIRECT формула за динамично препращане към друг работен лист
Полезността на функцията INDIRECT на Excel не се ограничава само до създаването на "динамични" препратки към клетки. Можете да я използвате и за препратки към клетки в други работни листове "в движение" и ето как.
Да предположим, че имате някои важни данни в лист 1 и искате да ги извлечете в лист 2. Следващата снимка показва как една формула на Excel може да се справи с тази задача:
Нека да разделим формулата, която виждате на снимката, и да разберем.
Както знаете, обичайният начин за препратка към друг лист в Excel е да се напише името на листа, последвано от възклицателен знак и препратка към клетка/обхват, например Име на лист!Обхват Тъй като името на листа често съдържа интервал(и), по-добре е да го оградите (името, а не интервала : ) в единични кавички, за да предотвратите грешка, например "Моят лист!"$A$1 .
Сега трябва само да въведете името на листа в една клетка, адреса на клетката в друга, да ги обедините в текстов низ и да подадете този низ на функцията INDIRECT. Не забравяйте, че в текстовия низ всеки елемент, различен от адреса на клетката или числото, трябва да се огради с двойни кавички и да се свържат всички елементи заедно с помощта на оператора за обединяване (&).
Като се има предвид горното, се получава следният модел:
INDIRECT("'") & Име на листа & "'!" & Клетка за извличане на данни от )Връщайки се към нашия пример, поставяте името на листа в клетка А1 и въвеждате адресите на клетките в колона В, както е показано на снимката по-горе. В резултат на това получавате следната формула:
INDIRECT("'" & $A$1 & "'!" & B1)
Освен това обърнете внимание, че ако копирате формулата в няколко клетки, трябва да заключите препратката към името на листа, като използвате абсолютните препратки към клетките, например $A$1.
Бележки
- Ако някоя от клетките, които съдържат името на втория лист и адреса на клетката (А1 и В1 в горната формула), е празна, формулата Indirect ще върне грешка. За да предотвратите това, можете да обвиете функцията INDIRECT във функцията IF:
IF(OR($A$1="",B1=""), "", INDIRECT("'" & $A$1 & "'!" & B1))
- За да работи правилно формулата INDIRECT, която препраща към друг лист, препращаният лист трябва да е отворен, в противен случай формулата ще върне грешка #REF. За да избегнете грешката, можете да използвате функцията IFERROR, която ще покаже празен низ, независимо от възникналата грешка:
IFERROR(INDIRECT("'" & $A$1 & "'!" &B1), "")
Създаване на динамична препратка към друга работна книга на Excel
Индиректната формула, която препраща към друга работна книга на Excel, се основава на същия подход като препратката към друга електронна таблица. Трябва само да посочите името на работната книга в допълнение към името на листа и адреса на клетката.
За да улесним нещата, нека започнем с препратка към друга книга по обичайния начин (апострофите се добавят, ако имената на книгите и/или листовете ви съдържат интервали):
'[Име на книгата.xlsx]Име на листа'!Обхват
Ако приемем, че името на книгата е в клетка A2, името на листа е в B2, а адресът на клетката е в C2, получаваме следната формула:
=INDIRECT("'[" & $A$2 & "]" & $B$2 & "'!" & C2)
Тъй като не искате клетките, съдържащи имената на книгата и листа, да се променят при копиране на формулата в други клетки, ги заключвате, като използвате абсолютни препратки към клетките, съответно $A$2 и $B$2.
Сега можете лесно да напишете своя собствена динамична препратка към друга работна книга на Excel, като използвате следния модел:
=INDIRECT("'[" & Име на книгата & "]" & Име на листа & "'!" & Адрес на клетката )Забележка. Работната книга, към която се отнася вашата формула, трябва винаги да е отворена, в противен случай функцията INDIRECT ще хвърли грешка #REF. Както обикновено, функцията IFERROR може да ви помогне да избегнете това:
=IFERROR(INDIRECT("'[" & A2 & "]" & $A$1 & "'!" & B1), "")
Използване на функцията INDIRECT на Excel за заключване на препратка към клетка
Обикновено Microsoft Excel променя препратките към клетките, когато вмъквате нови или изтривате съществуващи редове или колони в даден лист. За да предотвратите това, можете да използвате функцията INDIRECT, за да работите с препратки към клетки, които във всички случаи трябва да останат непокътнати.
За да илюстрирате разликата, моля, направете следното:
- Въведете каквато и да е стойност в която и да е клетка, например числото 20 в клетка А1.
- Препратка към A1 от две други клетки по различни начини:
=A1
и=INDIRECT("A1")
- Вмъкнете нов ред над ред 1.
Виждате ли какво се случва? Клетката с равен на Клетката с формулата INDIRECT сега връща 0, защото формулата не е била променена при вмъкването на нов ред и все още се отнася до клетка A1, която в момента е празна:
След тази демонстрация може да останете с впечатлението, че функцията INDIRECT е по-скоро досадна, отколкото полезна. Добре, нека опитаме по друг начин.
Да предположим, че искате да съберете стойностите в клетките А2:А5 и можете лесно да го направите с помощта на функцията SUM:
=SUM(A2:A5)
Искате обаче формулата да остане непроменена, без значение колко реда са изтрити или вмъкнати. Най-очевидното решение - използването на абсолютни препратки - няма да помогне. За да се уверите, въведете формулата =SUM($A$2:$A$5)
в някоя клетка, вмъкнете нов ред, например на ред 3, и... намерете формулата, преобразувана в =SUM($A$2:$A$6)
.
Разбира се, подобна любезност от страна на Microsoft Excel ще работи добре в повечето случаи. Въпреки това може да има сценарии, когато не искате формулата да се променя автоматично. Решението е да използвате функцията INDIRECT, както следва:
=SUM(INDIRECT("A2:A5"))
Тъй като Excel възприема "A1:A5" като обикновен текстов низ, а не като препратка към диапазон, той няма да направи никакви промени, когато вмъкнете или изтриете ред(и).
Използване на INDIRECT с други функции на Excel
Освен със SUM, INDIRECT се използва често и с други функции на Excel, като ROW, COLUMN, ADDRESS, VLOOKUP, SUMIF и др.
Пример 1. Функции INDIRECT и ROW
Много често функцията ROW се използва в Excel за връщане на масив от стойности. Например можете да използвате следната формула за масив (не забравяйте, че тя изисква натискане на Ctrl + Shift + Enter ), за да върнете средната стойност на трите най-малки числа в диапазона A1:A10:
=СРЕДНА СТОЙНОСТ(SMALL(A1:A10,ROW(1:3))
Въпреки това, ако в работния лист вмъкнете нов ред, някъде между редове 1 и 3, обхватът във функцията ROW ще се промени на ROW(1:4) и формулата ще върне средната стойност на 4-те най-малки числа вместо 3.
За да предотвратите това, вмъкнете INDIRECT във функцията ROW (Редове) и формулата на масива ви ще остане винаги правилна, независимо колко реда са вмъкнати или изтрити:
=СРЕДНА СТОЙНОСТ(SMALL(A1:A10,ROW(INDIRECT("1:3"))))
Ето още няколко примера за използване на INDIRECT и ROW в комбинация с функцията LARGE: Как да съберете N най-големи числа в диапазон.
Пример 2. Функции INDIRECT и ADDRESS
Можете да използвате функцията INDIRECT на Excel заедно с функцията ADDRESS, за да получите в движение стойност в определена клетка.
Както може би си спомняте, функцията ADDRESS се използва в Excel за получаване на адрес на клетка чрез номера на реда и колоната. =ADDRESS(1,3)
връща низа $C$1, тъй като C1 е клетката в пресечната точка на 1-ви ред и 3-ти стълб.
За да създадете непряка препратка към клетка, просто вградете функцията ADDRESS в INDIRECT формула по следния начин:
=ИНДИРЕКТНО (АДРЕС(1,3))
Разбира се, тази тривиална формула само демонстрира техниката. А ето и няколко примера, които могат да се окажат наистина полезни:
- Формула INDIRECT ADDRESS - как да превключвате редове и колони.
- VLOOKUP и INDIRECT - как динамично да извличате данни от различни листове.
- INDIRECT с INDEX / MATCH - как да доведете до съвършенство формулата VLOOKUP с отчитане на големи и малки букви.
- INDIRECT и COUNTIF в Excel - как да използвате функцията COUNTIF за несвързан диапазон или селекция от клетки.
Използване на INDIRECT с валидиране на данни в Excel
Можете да използвате функцията INDIRECT на Excel с функцията Data Validation, за да създадете каскадни падащи списъци, които показват различни възможности за избор в зависимост от стойността, която потребителят е избрал в първия падащ списък.
Създаването на прост зависим падащ списък е много лесно. Необходими са само няколко именувани диапазона за съхраняване на елементите на падащия списък и прост =INDIRECT(A2)
където A2 е клетката, в която се показва първият падащ списък.
За да създадете по-сложни менюта на 3 нива или падащи списъци с многословни записи, ще ви е необходима малко по-сложна формула INDIRECT с вложена функция SUBSTITUTE.
За подробни указания стъпка по стъпка за това как да използвате INDIRECT с Excel Data Validation, моля, разгледайте този урок: Как да направим зависим падащ списък в Excel.
Функция INDIRECT на Excel - възможни грешки и проблеми
Както е показано в горните примери, функцията INDIRECT е доста полезна при работа с препратки към клетки и диапазони. Въпреки това не всички потребители на Excel я приемат с готовност, най-вече защото широкото използване на INDIRECT във формулите на Excel води до липса на прозрачност. Функцията INDIRECT е трудна за преглед, тъй като клетката, към която препраща, не е крайното местоположение на стойността, използвана във формулата,което наистина е доста объркващо, особено при работа с големи и сложни формули.
В допълнение към казаното по-горе, както всяка друга функция на Excel, INDIRECT може да хвърли грешка, ако използвате неправилно аргументите на функцията. Ето списък на най-типичните грешки:
ИНДИРЕКТНА грешка на Excel #REF!
Най-често функцията INDIRECT връща грешка #REF! в три случая:
- ref_text не е валидна препратка към клетка . Ако параметърът ref_text във вашата индиректна формула не е валидна препратка към клетка, формулата ще доведе до стойност на грешката #REF! За да избегнете възможни проблеми, проверете аргументите на функцията INDIRECT.
- Превишена е границата на обхвата Ако аргументът ref_text на вашата индиректна формула се отнася до диапазон от клетки, надхвърлящ ограничението на реда от 1 048 576 или ограничението на колоната от 16 384, ще получите грешка #REF в Excel 2007, 2010 и Excel 2013. По-ранните версии на Excel игнорират надхвърленото ограничение и връщат някаква стойност, макар и често не тази, която очаквате.
- Посоченият лист или работна книга е затворен. Ако вашата индиректна формула препраща към друга работна книга или работен лист на Excel, тази друга работна книга или работен лист трябва да бъде отворена, в противен случай INDIRECT връща грешката #REF!.
Грешка в Excel INDIRECT #NAME?
Това е най-очевидният случай, който предполага, че в името на функцията има някаква грешка, което ни води до следващата точка : )
Използване на функцията INDIRECT в неанглоезични локации
Може би ще ви е интересно да научите, че английското име на функцията INDIRECT е преведено на 14 езика, включително:
|
|
Ако искате да получите пълния списък, моля, разгледайте тази страница.
Често срещан проблем при неанглоезични локализации е не името на функцията INDIRECT, а по-скоро различните Регионални настройки за Разделител на списъци . В стандартната конфигурация на Windows за Северна Америка и някои други страни по подразбиране Разделител на списъци е запетая. Докато в европейските страни запетаята е запазена като Десетичен символ и Разделител на списъци се задава точка и запетая.
В резултат на това при копиране на формула между две различни локални езици на Excel може да се получи съобщение за грешка " Открихме проблем с тази формула... ", защото Сепаратор на списъка Ако се сблъскате с тази грешка, когато копирате някоя INDIRECT формула от този урок във вашия Excel, просто заменете всички запетаи (,) с точка и запетая (;), за да я поправите.
За да проверите кой разделител на списъци и десетичен символ са зададени на вашата машина, отворете Контролен панел и отидете в Регион и език> Допълнителни настройки .
Надяваме се, че този урок е хвърлил малко светлина върху използването на INDIRECT в Excel. Сега, след като знаете силните и слабите страни на функцията, е време да я изпробвате и да видите как функцията INDIRECT може да опрости задачите ви в Excel. Благодарим ви, че прочетохте!