Функция FILTER на Excel - динамично филтриране с формули

  • Споделя Това
Michael Brown

Съдържание

В този кратък урок ще научите как да филтрирате в Excel динамично с формули. Примери за филтриране на дубликати, клетки, съдържащи определен текст, с множество критерии и др.

Как обикновено филтрирате в Excel? В по-голямата си част с помощта на функцията Автоматичен филтър, а при по-сложни сценарии - с Разширен филтър. Тъй като са бързи и мощни, тези методи имат един съществен недостатък - те не се актуализират автоматично при промяна на данните, което означава, че ще трябва да почиствате и филтрирате отново. Въвеждането на функцията ФИЛТЪР в Excel 365 се превръща в дългоочаквана алтернатива наЗа разлика от тях формулите на Excel се преизчисляват автоматично при всяка промяна на работния лист, така че ще трябва да настроите филтъра си само веднъж!

    Функция FILTER на Excel

    Функцията FILTER в Excel се използва за филтриране на диапазон от данни въз основа на зададени от вас критерии.

    Функцията принадлежи към категорията на функциите Dynamic Arrays (Динамични масиви). Резултатът е масив от стойности, който автоматично се разлива в диапазон от клетки, като се започне от клетката, в която сте въвели формулата.

    Синтаксисът на функцията FILTER е следният:

    FILTER(масив, include, [if_empty])

    Къде:

    • Масив (задължително) - обхватът или масивът от стойности, които искате да филтрирате.
    • Включете (задължително) - критериите, предоставени като булев масив (стойности TRUE и FALSE).

      Неговата височина (когато данните са в колони) или ширина (когато данните са в редове) трябва да е равна на тази на масив аргумент.

    • If_empty (незадължително) - стойността, която се връща, когато нито един запис не отговаря на критериите.

    Функцията FILTER е налична само в Excel за Microsoft 365 и Excel 2021. В Excel 2019, Excel 2016 и по-ранни версии тя не се поддържа.

    Основна формула на Excel FILTER

    Като начало нека обсъдим няколко много прости случая, за да разберем по-добре как работи формулата на Excel за филтриране на данни.

    Предполагаме, че искате да извлечете записите с определена стойност в полето Група , колона, да речем група C. За да го направим, предоставяме израза B2:B13="C" на включва който ще създаде необходимия булев масив, като TRUE ще съответства на стойности "C".

    =FILTER(A2:C13, B2:B13="C", "Няма резултати")

    На практика е по-удобно да въведете критериите в отделна клетка, например F1, и да използвате препратка към клетката, вместо да кодирате стойността директно във формулата:

    =FILTER(A2:C13, B2:B13=F1, "Няма резултати")

    За разлика от функцията "Филтриране" на Excel, функцията не прави никакви промени в оригиналните данни. Тя извлича филтрираните записи в така наречения "разливен диапазон" (E4:G7 на екранната снимка по-долу), започвайки от клетката, в която е въведена формулата:

    Ако няма записи, които да отговарят на зададените критерии, формулата връща стойността, която сте въвели в полето if_empty аргумент, "Няма резултати" в този пример:

    Ако предпочитате връщане на нищо в този случай въведете празен низ ("") за последния аргумент:

    =ФИЛТЪР(A2:C13, B2:B13=F1, "")

    В случай че данните ви са организирани хоризонтално отляво надясно, както е показано на снимката по-долу, функцията FILTER също ще работи добре. Само се уверете, че сте определили подходящи диапазони за масив и включва аргументи, така че масивът на източника и масивът на булевите стойности да имат еднаква ширина:

    =FILTER(B2:M4, B3:M3= B7, "Няма резултати")

    Функция FILTER на Excel - бележки за употреба

    За да филтрирате ефективно в Excel с помощта на формули, ето няколко важни точки, на които трябва да обърнете внимание:

    • Функцията ФИЛТЪР автоматично разпръсква резултатите вертикално или хоризонтално в работния лист, в зависимост от това как са организирани първоначалните ви данни. Затова се уверете, че винаги имате достатъчно празни клетки надолу и надясно, в противен случай ще получите грешка #SPILL.
    • Резултатите от функцията FILTER на Excel са динамични, което означава, че те се актуализират автоматично при промяна на стойностите в първоначалния набор от данни. масив не се актуализира, когато в изходните данни се добавят нови записи. Ако желаете аргументът масив за автоматично оразмеряване, след което го преобразувайте в таблица на Excel и създайте формули със структурирани препратки или създайте динамичен именуван диапазон.

    Как да филтрираме в Excel - примери за формули

    След като вече знаете как работи основната формула за филтриране в Excel, е време да се запознаете с начините за разширяване на нейното приложение за решаване на по-сложни задачи.

    Филтриране с множество критерии (логика AND)

    За да филтрирате данни с множество критерии, задайте два или повече логически израза за включва аргумент:

    FILTER(масив, ( обхват1 = критерии1 ) * ( обхват2 = критерии2 ), "Няма резултати")

    Операцията за умножение обработва масивите с Логика AND , като се гарантира, че само записите, които отговарят на всички критерии Технически това става по следния начин:

    Резултатът от всеки логически израз е масив от булеви стойности, където TRUE се равнява на 1, а FALSE - на 0. След това елементите на всички масиви на същите позиции се умножават. Тъй като умножаването по нула винаги дава нула, само елементите, за които всички критерии са TRUE, попадат в получения масив и следователно само тези елементи се извличат.

    Примерите по-долу показват тази обща формула в действие.

    Пример 1. Филтриране на няколко колони в Excel

    Като разширим още малко нашата основна формула FILTER на Excel, нека филтрираме данните по две колони: Група (колона В) и Печели (колона В).

    За тази цел задаваме следните критерии: въведете името на целевата група в F2 ( критерии1 ) и минималния необходим брой победи във F3 ( критерии2 ).

    Като се има предвид, че изходните ни данни са в A2:C13 ( масив ), групите са в B2:B13 ( обхват1 ), а победите са в C2:C13 ( обхват2 ), формулата придобива следния вид:

    =FILTER(A2:C13, (B2:B13=F2) * (C2:C13>=F3), "Няма резултати")

    В резултат на това получавате списък с играчите от група А, които са постигнали 2 или повече победи:

    Пример 2. Филтриране на данни между дати

    Първо, трябва да се отбележи, че не е възможно да се състави обща формула за филтриране по дата в Excel. В различните ситуации ще трябва да изграждате критериите по различен начин, в зависимост от това дали искате да филтрирате по конкретна дата, по месец или по година. Целта на този пример е да демонстрира общия подход.

    Към нашите примерни данни добавяме още една колона, съдържаща датите на последната печалба (колона D). Сега ще извлечем печалбите, които са се случили през определен период, например между 17 и 31 май.

    Обърнете внимание, че в този случай и двата критерия се отнасят за един и същ диапазон:

    =FILTER(A2:D13, (D2:D13>=G2) * (D2:D13<=G3), "Няма резултати")

    Където G2 и G3 са датите, между които се филтрира.

    Филтриране с множество критерии (логика OR)

    За извличане на данни въз основа на многократно условие OR също използвате логически изрази, както е показано в предишните примери, но вместо да ги умножавате, ги събирате. Когато булевите масиви, върнати от изразите, се сумират, полученият масив ще има 0 за записи, които не отговарят на нито един критерий (т.е. всички критерии са FALSE), и такива записи ще бъдат филтрирани.поне един критерий е TRUE, ще бъдат извлечени.

    Ето общата формула за филтриране на колони с логиката OR:

    FILTER(масив, ( обхват1 = критерии1 ) + ( обхват2 = критерии2 ), "Няма резултати")

    Като пример, нека извлечем списък с играчи, които имат това или онова брой победи.

    Ако приемем, че изходните данни са в A2:C13, победите са в C2:C13, а номерата на победите, които ни интересуват, са в F2 и F3, формулата ще бъде следната:

    =FILTER(A2:C13, (C2:C13=F2) + (C2:C13=F3), "Няма резултати")

    В резултат на това знаете кои играчи са спечелили всички игри (4) и кои не са спечелили нито една (0):

    Филтриране въз основа на множество критерии AND и OR

    Когато трябва да приложите и двата типа критерии, запомнете това просто правило: обединете критериите AND със звездичка (*) и критериите OR със знака плюс (+).

    Например, за да върнете списък с играчи, които имат даден брой победи (F2) И принадлежат към групата, спомената в E2 ИЛИ E3, постройте следната верига от логически изрази:

    =FILTER(A2:C13, (C2:C13=F2) * ((B2:B13=E2) + (B2:B13=E3)), "Няма резултати")

    И ще получите следния резултат:

    Как да филтрирате дубликати в Excel

    Когато работите с огромни работни листове или комбинирате данни от различни източници, често има вероятност да се промъкнат дубликати.

    Ако търсите филтриране дубликати и извлечете уникални елементи, след което използвайте функцията UNIQUE, както е обяснено в посочения по-горе урок.

    Ако целта ви е да филтриране на дубликати , т.е. да извлечете записи, които се срещат повече от веднъж, след което използвайте функцията FILTER заедно с COUNTIFS.

    Идеята е да се получи броят на срещите за всички записи и да се извлекат тези, които са по-големи от 1. За да получите броя, трябва да предоставите един и същ диапазон за всеки criteria_range / критерии двойка COUNTIFS като това:

    ФИЛТЪР( масив , COUNTIFS( колона1 , колона1, колона2 , колона2 )>1, "Няма резултати")

    Например, за да филтрирате дублиращи се редове от данните в A2:C20 въз основа на стойностите във всички 3 колони, използвайте следната формула:

    =FILTER(A2:C20, COUNTIFS(A2:A20, A2:A20, B2:B20, B2:B20, C2:C20, C2:C20)>1, "Няма резултати")

    Съвет. За филтриране на дубликати въз основа на стойностите в ключови колони , включете само тези конкретни колони във функцията COUNTIFS.

    Как да филтрирате празните места в Excel

    Формулата за филтриране на празни клетки всъщност е разновидност на формулата FILTER на Excel с множество критерии AND. В този случай проверяваме дали във всички (или в определени) колони има данни и изключваме редовете, в които поне една клетка е празна. За да идентифицирате непразни клетки, използвате оператора "not equal to" () заедно с празен низ ("") по следния начин:

    FILTER(масив, ( колона1 "") * ( колона2 =""), "Няма резултати")

    При изходните данни в A2:C12, за да се филтрират редове, съдържащи една или повече празни клетки, в E3 се въвежда следната формула:

    Филтриране на клетки, съдържащи определен текст

    За да извлечете клетки, които съдържат определен текст, можете да използвате функцията FILTER заедно с класическата формула If cell contains:

    FILTER(масив, ISNUMBER(SEARCH(" текст ", обхват )), "Няма резултати")

    Ето как работи:

    • Функцията SEARCH (Търсене) търси определен текстов низ в зададен диапазон и връща или число (позицията на първия символ), или грешка #VALUE! (текстът не е намерен).
    • Функцията ISNUMBER преобразува всички числа в TRUE, а грешките във FALSE и предава получения булев масив на функцията включва аргумент на функцията FILTER.

    За този пример добавихме Фамилии на играчите в B2:B13, въвеждаме частта от името, която искаме да намерим в G2, и след това използваме следната формула, за да филтрираме данните:

    =FILTER(A2:D13, ISNUMBER(SEARCH(G2, B2:B13)), "Няма резултати")

    В резултат на това формулата извлича двете фамилни имена, съдържащи "han":

    Филтриране и изчисляване (сума, средна стойност, минус, максимум и др.)

    Готиното на функцията FILTER на Excel е, че тя може не само да извлича стойности с условия, но и да обобщава филтрираните данни. За тази цел комбинирайте FILTER с функции за обобщаване като SUM, AVERAGE, COUNT, MAX или MIN.

    Например за обобщаване на данни за определена група в F1 използвайте следните формули:

    Общо победи:

    =SUM(FILTER(C2:C13, B2:B13=F1, 0))

    Средни победи:

    =СРЕДНА СТОЙНОСТ(FILTER(C2:C13, B2:B13=F1, 0))

    Максимални печалби:

    =MAX(FILTER(C2:C13, B2:B13=F1, 0))

    Минимален брой победи:

    =MIN(FILTER(C2:C13, B2:B13=F1, 0))

    Моля, обърнете внимание, че във всички формули използваме нула за if_empty Поставянето на текст като "Няма резултати" ще доведе до грешка #VALUE, което очевидно е последното нещо, което искате :)

    Формула FILTER, чувствителна към малки и големи букви

    Стандартната формула FILTER на Excel е безразлична към малкия и големия размер на буквите, което означава, че не прави разлика между малки и големи букви. За да разграничите размера на текста, вложете функцията EXACT в включва Това ще накара FILTER да направи логически тест по начин, при който се отчитат малките и големите букви:

    FILTER(масив, EXACT( обхват , критерии ), "Няма резултати")

    Да предположим, че имате и двете групи A и a и желаете да извлечете записи, в които групата е малката буква "а". За да го направите, използвайте следната формула, където A2:C13 са изходните данни, а B2:B13 са групите за филтриране:

    =FILTER(A2:C13, EXACT(B2:B13, "a"), "Няма резултати")

    Както обикновено, можете да въведете целевата група в предварително дефинирана клетка, например F1, и да използвате препратка към тази клетка вместо твърдо кодиран текст:

    =FILTER(A2:C13, EXACT(B2:B13, F1), "Няма резултати")

    Как да филтрирате данните и да връщате само определени колони

    В по-голямата си част филтрирането на всички колони с една формула е това, което искат потребителите на Excel. Но ако изходната ви таблица съдържа десетки или дори стотици колони, със сигурност ще искате да ограничите резултатите до няколко най-важни.

    Пример 1. Филтриране на някои съседни колони

    Когато искате някои съседни колони да се появят в резултата от FILTER, включете само тези колони в масив тъй като именно този аргумент определя кои колони да бъдат върнати.

    В примера с основната формула FILTER, ако искате да върнете първите 2 колони ( Име и Група ). И така, вие предоставяте A2:B13 за масив аргумент:

    =FILTER(A2:B13, B2:B13=F1, "Няма резултати")

    В резултат на това получаваме списък на участниците в целевата група, определена в F1:

    Пример 2. Филтриране на несъседни колони

    За да накарате функцията FILTER да връща колони, които не са съседни, използвайте този хитър трик:

    1. Направете формула FILTER с желаното условие (условия), като използвате цялата таблица за масив .
    2. Вмъкнете горната формула в друга функция FILTER. За да конфигурирате функцията "wrapper", използвайте масивна константа от стойности TRUE и FALSE или 1 и 0 за включва аргумент, където TRUE (1) маркира колоните, които трябва да бъдат запазени, а FALSE (0) маркира колоните, които трябва да бъдат изключени.

    Например, за да върнете само Имена (първа колона) и Печели (3-та колона), използваме {1,0,1} или {TRUE,FALSE,TRUE} за включва аргумент на външната функция FILTER:

    =ФИЛТЪР(FILTER(A2:C13, B2:B13=F1), {1,0,1})

    Или

    =ФИЛТЪР(FILTER(A2:C13, B2:B13=F1), {TRUE,FALSE,TRUE})

    Как да ограничите броя на редовете, връщани от функцията FILTER

    Ако формулата ви FILTER намира доста резултати, но работният ви лист е с ограничено пространство и не можете да изтриете данните по-долу, можете да ограничите броя на редовете, които връща функцията FILTER.

    Нека да видим как работи в пример с проста формула, която изтегля играчи от целевата група във Формула 1:

    =ФИЛТЪР(A2:C13, B2:B13=F1)

    Горната формула извежда всички намерени записи - 4 реда в нашия случай. Но да предположим, че имате място само за два. За да изведете само първите два намерени реда, трябва да направите следното:

    • Включете формулата FILTER в масив аргумент на функцията INDEX.
    • За row_num използвайте константа за вертикален масив като {1;2}. Тя определя колко реда да се върнат (2 в нашия случай).
    • За номер на колона (column_num) използвайте хоризонтална константа за масиви, например {1,2,3}. Тя указва кои колони да бъдат върнати (първите 3 колони в този пример).
    • За да се погрижите за възможни грешки, когато не са намерени данни, отговарящи на критериите, можете да обвиете формулата си във функцията IFERROR.

    Пълната формула има следния вид:

    =IFERROR(INDEX(FILTER(A2:C13, B2:B13=F1), {1;2}, {1,2,3}), "Няма резултат")

    Когато работите с големи таблици, ръчното записване на константи за масиви може да се окаже доста тромаво. Няма проблем, функцията SEQUENCE може да генерира последователните номера автоматично вместо вас:

    =IFERROR(INDEX(FILTER(A2:C13, B2:B13=F1), SEQUENCE(2), SEQUENCE(1, COLUMNS(A2:C13))), "Няма резултат")

    Първата функция SEQUENCE генерира вертикален масив, съдържащ толкова последователни числа, колкото са посочени в първия (и единствен) аргумент. Втората функция SEQUENCE използва функцията COLUMNS, за да преброи броя на колоните в набора от данни, и генерира еквивалентен хоризонтален масив.

    Съвет. За връщане на данни от специфични колони , а не всички колони, в константата на хоризонталния масив, която използвате за номер на колона (column_num) на аргумента INDEX, включете само тези конкретни числа. Например, за да извлечете данни от 1-ва и 3-та колона, използвайте {1,3}.

    Функцията FILTER на Excel не работи

    В случаите, когато формулата FILTER на Excel води до грешка, най-вероятно тя ще бъде една от следните:

    #CALC! грешка

    Настъпва, ако опцията if_empty Причината за това е, че понастоящем Excel не поддържа празни масиви. За да предотвратите подобни грешки, не забравяйте винаги да дефинирате if_empty стойност във формулите си.

    Грешка #VALUE

    Настъпва, когато масив и включва имат несъвместими измерения.

    #N/A, #VALUE и т.н.

    Възможно е да възникнат различни грешки, ако някоя стойност в включва е грешка или не може да се преобразува в булева стойност.

    #NAME грешка

    Появява се при опит за използване на FILTER в по-стара версия на Excel. Моля, не забравяйте, че това е нова функция, която е налична само в Office 365 и Excel 2021.

    В новия Excel се появява грешка #NAME, ако случайно изпишете погрешно името на функцията.

    Грешка #SPILL

    Най-често тази грешка се появява, ако една или повече клетки в диапазона на разливане не са напълно празни. За да я поправите, просто изчистете или изтрийте непразни клетки. За да проучите и разрешите други случаи, вижте "Грешка #SPILL! в Excel: какво означава и как да я поправите".

    #REF! грешка

    Това се случва, когато се използва формула FILTER между различни работни книги и изходната работна книга е затворена.

    Това е начинът за динамично попълване на данни в Excel. Благодаря ви, че прочетохте, и се надявам да се видим в нашия блог следващата седмица!

    Изтегляне на работна тетрадка за практика

    Филтриране в Excel с формули (.xlsx файл)

    Майкъл Браун е отдаден технологичен ентусиаст със страст към опростяване на сложни процеси с помощта на софтуерни инструменти. С повече от десетилетие опит в технологичната индустрия, той е усъвършенствал уменията си в Microsoft Excel и Outlook, както и в Google Sheets и Docs. Блогът на Майкъл е посветен на споделянето на неговите знания и опит с други, предоставяйки лесни за следване съвети и уроци за подобряване на продуктивността и ефективността. Независимо дали сте опитен професионалист или начинаещ, блогът на Michael предлага ценни прозрения и практически съвети за извличане на максимума от тези основни софтуерни инструменти.