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

  • Споделете Го Ова
Michael Brown

Содржина

Во оваа брза лекција, ќе научите како динамично да филтрирате во Excel со формули. Примери за филтрирање дупликати, ќелии што содржат одреден текст, со повеќе критериуми и друго.

Како обично филтрирате во Excel? Во најголем дел, со користење на автоматски филтер и во посложени сценарија со напреден филтер. Бидејќи се брзи и моќни, овие методи имаат еден значаен недостаток - тие не се ажурираат автоматски кога вашите податоци се менуваат, што значи дека ќе треба повторно да ги исчистите и филтрирате. Воведувањето на функцијата FILTER во Excel 365 станува долгоочекувана алтернатива на конвенционалните карактеристики. За разлика од нив, формулите на Excel автоматски се пресметуваат со секоја промена на работниот лист, така што ќе треба да го поставите вашиот филтер само еднаш!

    Excel FILTER функција

    Функцијата FILTER во Excel се користи за филтрирање на опсег на податоци врз основа на критериумите што ги одредувате.

    Функцијата припаѓа на категоријата функции на динамички низи. Резултатот е низа вредности што автоматски се прелеваат во опсег на ќелии, почнувајќи од ќелијата каде што внесувате формула.

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

    FILTER(низа, вклучува , [ако_празна])

    Каде:

    • Низа (потребно) - опсегот или низата вредности што сакате да ги филтрирате.
    • Вклучи (задолжително) - критериумите обезбедени како Булова низа (TRUE и FALSE вредности).

      Нејзинитедури и стотици колони, можеби ќе сакате да ги ограничите резултатите на неколку најважни.

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

      Во ситуација кога сакате некои соседни колони да се појавуваат во резултат FILTER, вклучи само тие колони во низа бидејќи токму овој аргумент одредува кои колони да се вратат.

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

      =FILTER(A2:B13, B2:B13=F1, "No results")

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

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

      За да предизвикате функцијата FILTER да враќа несоседни колони, користете го овој паметен трик:

      1. Направете формула FILTER со саканите услови(и) користејќи ја целата табела за низа .
      2. Вгнездувајте ја горната формула во друга функција FILTER. За да ја конфигурирате функцијата „wrapper“, користете константа на низа од TRUE и FALSE вредности или 1 и 0 за аргументот вклучи , каде што TRUE (1) ги означува колоните што треба да се чуваат, а FALSE (0) ги означува колоните што треба да се исклучат.

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

      =FILTER(FILTER(A2:C13, B2:B13=F1), {1,0,1})

      Или

      =FILTER(FILTER(A2:C13, B2:B13=F1), {TRUE,FALSE,TRUE})

      Како да се ограничиброј на редови вратени со функцијата FILTER

      Ако вашата формула FILTER најде доста резултати, но вашиот работен лист има ограничен простор и не можете да ги избришете податоците подолу, тогаш можете да го ограничите бројот на редови што функцијата FILTER ги враќа .

      Ајде да видиме како функционира на пример на едноставна формула која ги повлекува играчите од целната група во F1:

      =FILTER(A2:C13, B2:B13=F1)

      Горената формула ги прикажува сите записи кои наоѓа, 4 реда во нашиот случај. Но, да претпоставиме дека имате простор за двајца. За да ги извадите само првите 2 пронајдени редови, ова е она што треба да го направите:

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

    Целосната формула ја има оваа форма:

    =IFERROR(INDEX(FILTER(A2:C13, B2:B13=F1), {1;2}, {1,2,3}), "No result")

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

    =IFERROR(INDEX(FILTER(A2:C13, B2:B13=F1), SEQUENCE(2), SEQUENCE(1, COLUMNS(A2:C13))), "No result")

    Првата SEQUENCE генерира вертикална низашто содржи онолку секвенцијални броеви колку што е наведено во првиот (и единствениот) аргумент. Втората SEQUENCE ја користи функцијата COLUMNS за броење на бројот на колони во базата на податоци и произведува еквивалентна хоризонтална низа.

    Совет. За враќање на податоци од специфични колони , не сите колони, во константата на хоризонталната низа што ја користите за аргументот column_num на INDEX, не ги вклучуваат само тие специфични броеви. На пример, за да извлечете податоци од првата и третата колона, користете {1,3}.

    Excel FILTER функцијата не работи

    Во ситуација кога формулата Excel FILTER резултира со грешка, најверојатно тоа ќе биде една од следниве:

    #CALC! грешка

    Се појавува ако опционалниот аргумент if_empty е испуштен и не се најдат резултати кои ги исполнуваат критериумите. Причината е што во моментов Excel не поддржува празни низи. За да спречите такви грешки, погрижете се секогаш да ја дефинирате вредноста if_empty во вашите формули.

    #VALUE грешка

    Се појавува кога низата и <Аргументот 1>include има некомпатибилни димензии.

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

    Може да се појават различни грешки ако некоја вредност во аргументот вклучи е грешка или не може да се конвертира во Булова вредност.

    Грешка #NAME

    Се појавува кога се обидувате да користите FILTER во постара верзија на Excel. Запомнете дека тоа е нова функција, која е достапна само во Office 365 и Excel 2021.

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

    #SPILL error

    Најчесто, оваа грешка се појавува ако една или повеќе ќелии во опсегот на истурање не се целосно празни . За да го поправите, само исчистете или избришете ги непразни ќелии. За да истражите и разрешите други случаи, ве молиме погледнете #ПРОПИЛИ! грешка во Excel: што значи тоа и како да се поправи.

    #REF! грешка

    Се појавува кога формулата FILTER се користи помеѓу различни работни книги и изворната работна книга е затворена.

    Така динамично се подигнуваат податоците во Excel. Ви благодарам што прочитавте и се надевам дека ќе се видиме на нашиот блог следната недела!

    Преземете ја работната книга за вежбање

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

    висината (кога податоците се во колони) или ширината (кога податоците се во редови) мора да бидат еднакви на онаа на аргументот низа .
  • If_empty (опционално) - вредноста што треба да се врати кога ниту еден запис не ги исполнува критериумите.
  • ФИЛТЕР функцијата е достапна само во Excel за Microsoft 365 и Excel 2021. Во Excel 2019, Excel 2016 и претходните верзии, тој не е поддржан.

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

    За почеток, ајде да разговараме за неколку многу едноставни случаи само за да добиеме повеќе разбирање како функционира формулата на Excel за филтрирање на податоци.

    Од долунаведената група податоци, претпоставувајќи дека сакате да ги извадите записите со одредена вредност во колоната Група , да речеме група В. За да го направиме тоа, го доставуваме изразот B2:B13="C" на аргументот include , кој ќе ја произведе потребната Булова низа, со TRUE што одговара на вредностите "C".

    =FILTER(A2:C13, B2:B13="C", "No results")

    Во пракса, попогодно е да се внесат критериумите во посебна ќелија, на пр. F1 и користете референца на ќелија наместо хардкодирање на вредноста директно во формулата:

    =FILTER(A2:C13, B2:B13=F1, "No results")

    За разлика од функцијата Филтер на Excel, функцијата не прави никакви промени на оригиналните податоци. Ги извлекува филтрираните записи во таканаречениот опсег на истурање (E4:G7 на екранот подолу), почнувајќи од ќелијата каде што е внесена формулата:

    Ако нема записи одговараат на наведените критериуми, формулата ја враќа вредноста што ја ставивте во if_empty аргумент, „Нема резултати“ во овој пример:

    Ако сакате ништо да не вратите во овој случај, тогаш наведете празна низа ("") за последниот аргумент:

    =FILTER(A2:C13, B2:B13=F1, "")

    Во случај вашите податоци да се организирани хоризонтално од лево кон десно како што е прикажано на екранот подолу, и функцијата FILTER ќе работи убаво. Само погрижете се да дефинирате соодветни опсези за аргументите низа и вклучуваат , така што изворната низа и Буловата низа имаат иста ширина:

    =FILTER(B2:M4, B3:M3= B7, "No results")

    Excel FILTER функција - белешки за употреба

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

    • Функцијата FILTER автоматски ги истура резултатите вертикално или хоризонтално во работниот лист, во зависност од тоа како се организирани вашите оригинални податоци. Затоа, проверете дали секогаш имате доволно празни ќелии долу и десно, инаку ќе добиете грешка #SPILL.
    • Резултатите од функцијата Excel FILTER се динамични, што значи дека се ажурираат автоматски кога вредностите се во се менува оригиналниот сет на податоци. Сепак, опсегот доставен за аргументот низа не се ажурира кога се додаваат нови записи во изворните податоци. Ако сакате низата автоматски да ја менува големината, тогаш претворете ја во табела на Excel и изградете формули со структурирани референци или креирајте динамичен опсег со име.

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

    Сега кога знаете како функционира основната формула за филтер на Excel, време е да добиете некои сознанија за тоа како таа може да се прошири за решавање посложени задачи.

    Филтер со повеќе критериуми (И логика)

    За филтрирање податоци со повеќе критериуми, давате два или повеќе логички изрази за аргументот вклучете :

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

    Операцијата за множење ги обработува низите со AND логиката , осигурувајќи дека се враќаат само записите што ги исполнуваат сите критериуми . Технички, тоа функционира на следниов начин:

    Резултатот од секој логички израз е низа од Булови вредности, каде што TRUE е еднакво на 1 и FALSE на 0. Потоа, елементите на сите низи во исти позиции се множат . Бидејќи множењето со нула секогаш дава нула, само ставките за кои сите критериуми се ВИСТИНИ влегуваат во добиената низа, и последователно само тие ставки се извлекуваат.

    Примерите подолу ја прикажуваат оваа генеричка формула на дело.

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

    Проширувајќи ја нашата основна формула Excel FILTER малку подалеку, ајде да ги филтрираме податоците по две колони: Група (колона Б) и Wins (колона C).

    За ова, ги поставивме следните критериуми: внесете го името на целната група во F2 ( criteria1 ) и минималниот потребен број напобеди во F3 ( критериуми2 ).

    Со оглед на тоа што нашите изворни податоци се во A2:C13 ( низа ), групите се во B2:B13 ( опсег1 ) и победите се во C2:C13 ( опсег2 ), формулата ја има оваа форма:

    =FILTER(A2:C13, (B2:B13=F2) * (C2:C13>=F3), "No results")

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

    Пример 2. Филтрирајте ги податоците помеѓу датумите

    Прво, треба да се забележи дека тоа не е можно да се направи генеричка формула за филтрирање по датум во Excel. Во различни ситуации, ќе треба различно да изградите критериуми, во зависност од тоа дали сакате да филтрирате по одреден датум, по месец или по година. Целта на овој пример е да го демонстрира општиот пристап.

    На нашиот примерок на податоци, додаваме уште една колона која ги содржи датумите на последната победа (колона D). И сега, ќе ги извлечеме победите што се случија во одреден период, да речеме помеѓу 17 мај и 31 мај.

    Забележете дека во овој случај, двата критериуми важат за истиот опсег:

    =FILTER(A2:D13, (D2:D13>=G2) * (D2:D13<=G3), "No results")

    Каде што G2 и G3 се датумите за филтрирање помеѓу.

    Филтер со повеќе критериуми (ИЛИ логика)

    За да се извлечат податоци врз основа на повеќекратна состојба ИЛИ, исто така користите логички изрази како што е прикажано во претходните примери, но наместо да се множите, ги собирате. Кога Буловите низи вратени со изразите се сумираат, добиената низа ќе има 0 за записи кои не исполнуваат ниту еден критериум (т.е. ситекритериумите се НЕТОЧНИ), и таквите записи ќе бидат филтрирани. Записите за кои барем еден критериум е ВИСТИНА ќе се извлечат.

    Еве ја генеричката формула за филтрирање колони со логиката ИЛИ:

    FILTER(низа, ( опсег1= критериуми1) + ( опсег2= критериуми2), „Нема резултати“)

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

    Претпоставувајќи дека изворните податоци се во A2:C13, победите се во C2:C13, а бројот на победи на интерес се во F2 и F3, формулата ќе оди на следниов начин:

    =FILTER(A2:C13, (C2:C13=F2) + (C2:C13=F3), "No results")

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

    Филтер заснован на повеќе критериуми И, како и ИЛИ

    Во ситуација кога треба да ги примените двата типа критериуми, запомнете го ова едноставно правило: приклучете ги критериумите И со ѕвездичка (*) и критериумите ИЛИ со плус знак (+).

    На пример, за да вратите список на играчи кои имаат даден број на победи (F2) И припаѓаат на групата спомената или во Е2 ИЛИ Е3, изградете го следниов синџир на логички изрази:

    =FILTER(A2:C13, (C2:C13=F2) * ((B2:B13=E2) + (B2:B13=E3)), "No results")

    И ќе го добиете следниот резултат:

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

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

    Ако сакате да филтрирате дупликати и екстрактуникатни ставки, потоа користете ја функцијата UNIQUE како што е објаснето во погоре поврзаното упатство.

    Ако вашата цел е да филтрирате дупликати , т.е. да извлечете записи што се појавуваат повеќе од еднаш, тогаш користете ја функцијата FILTER заедно со COUNTIFS.

    Идејата е да се добијат броевите на појавите за сите записи и да се извлечат оние поголеми од 1. За да ги добиете броевите, го давате истиот опсег за секој опсег_критериуми / критериуми пар на COUNTIFS како ова:

    FILTER( низа, 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, "No results")

    Совет. За да ги филтрирате дупликатите врз основа на вредностите во клучните колони , вклучете ги само тие специфични колони во функцијата COUNTIFS.

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

    Формулата за филтрирање на празни ќелии е всушност варијација на формулата Excel FILTER со повеќе AND критериуми. Во овој случај, проверуваме дали сите (или одредени) колони имаат податоци во нив и ги исклучуваме редовите каде што барем една ќелија е празна. За да ги идентификувате ќелиите што не се празни, го користите операторот „не е еднаков на“ () заедно со празна низа („“) како ова:

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

    Со изворните податоци во A2:C12, за филтрирање редовишто содржи една или повеќе празни ќелии, во E3 се внесува следнава формула:

    Филтрирајте ги ќелиите што содржат специфичен текст

    За да извлечете ќелии што содржат одреден текст, вие може да ја користи функцијата FILTER заедно со класичната ако ќелијата содржи формула:

    FILTER(низа, ISNUMBER(SEARCH(" текст ", опсег )), "Нема резултати")

    Еве како функционира:

    • Функцијата SEARCH бара одредена текстуална низа во даден опсег и враќа или број (позицијата на првиот знак) или #VALUE! грешка (текстот не е пронајден).
    • Функцијата ISNUMBER ги конвертира сите броеви во TRUE и грешките во FALSE и ја пренесува добиената Булова низа на аргументот include на функцијата FILTER.

    За овој пример, ги додадовме Презимињата на играчите во B2:B13, го впишавме делот од името што сакаме да го најдеме во G2, а потоа ја искористивме следнава формула за филтрирајте ги податоците:

    =FILTER(A2:D13, ISNUMBER(SEARCH(G2, B2:B13)), "No results")

    Како резултат, формулата ги враќа двете презимиња што содржат „хан“:

    Филтрирајте и пресметајте (Збир, просек, минимум, макс, итн.)

    Одлична работа во врска со функцијата Excel FILTER е тоа што не само што може да извлече вредности со услови, туку и да ги сумира филтрираните податоци. За ова, комбинирајте FILTER со функции за собирање, како што се SUM, AVERAGE, COUNT, MAX или MIN.

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

    Вкупни победи:

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

    Просечни победи:

    =AVERAGE(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 , така што формулите би врати 0 ако не се најдат вредности кои ги исполнуваат критериумите. Давате каков било текст како „Нема резултати“ би резултирало со #VALUE грешка, што очигледно е последното нешто што го сакате :)

    ФИЛТЕР чувствителна на букви

    Стандардна формула на Excel FILTER е осетлива на букви, што значи дека не прави разлика помеѓу мали и големи букви. За да разликувате букви на текст, вгнездувајте ја функцијата EXACT во аргументот include . Ова ќе го принуди FILTER да направи логички тест на начин чувствителен на букви:

    FILTER(низа, EXACT( опсег , критериуми ), „Нема резултати“)

    Претпоставувајќи , ги имате двете групи A и a и сакате да извлечете записи каде групата е малата буква „а“. За да го направите тоа, користете ја следнава формула, каде што A2:C13 се изворните податоци, а B2:B13 се групи за филтрирање:

    =FILTER(A2:C13, EXACT(B2:B13, "a"), "No results")

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

    =FILTER(A2:C13, EXACT(B2:B13, F1), "No results")

    Како да се ФИЛИТРИРАТЕ податоци и да се вратат само одредени колони

    Во најголем дел, филтрирањето на сите колони со една формула е она што го сакаат корисниците на Excel. Но, ако вашата изворна табела содржи десетици или

    Мајкл Браун е посветен технолошки ентузијаст со страст за поедноставување на сложените процеси користејќи софтверски алатки. Со повеќе од една деценија искуство во технолошката индустрија, тој ги усоврши своите вештини во Microsoft Excel и Outlook, како и Google Sheets и Docs. Блогот на Мајкл е посветен на споделување на своето знаење и експертиза со другите, обезбедувајќи лесни за следење совети и упатства за подобрување на продуктивноста и ефикасноста. Без разлика дали сте искусен професионалец или почетник, блогот на Мајкл нуди вредни сознанија и практични совети за да го извлечете максимумот од овие основни софтверски алатки.