Оглавление
В этом кратком уроке вы узнаете, как динамически фильтровать в Excel с помощью формул. Примеры фильтрации дубликатов, ячеек, содержащих определенный текст, с несколькими критериями и многое другое.
Как вы обычно фильтруете в Excel? По большей части с помощью автофильтра, а в более сложных сценариях - с помощью расширенного фильтра. Будучи быстрыми и мощными, эти методы имеют один существенный недостаток - они не обновляются автоматически при изменении данных, что означает, что вам придется очищать и фильтровать заново. Появление функции FILTER в Excel 365 становится долгожданной альтернативой тому.В отличие от них, формулы Excel пересчитываются автоматически при каждом изменении рабочего листа, поэтому вам нужно будет настроить фильтр всего один раз!
Функция ФИЛЬТР Excel
Функция FILTER в Excel используется для фильтрации диапазона данных на основе заданных вами критериев.
Функция относится к категории функций Динамические массивы. В результате получается массив значений, который автоматически разливается по диапазону ячеек, начиная с ячейки, в которую вы вводите формулу.
Синтаксис функции FILTER следующий:
FILTER(array, include, [if_empty])Где:
- Массив (требуется) - диапазон или массив значений, которые вы хотите отфильтровать.
- Включить (требуется) - критерии, представленные в виде булева массива (значения TRUE и FALSE).
Его высота (когда данные находятся в столбцах) или ширина (когда данные находятся в строках) должна быть равна высоте или ширине строки массив аргумент.
- Если_пустой (необязательно) - значение, которое будет возвращено, если ни одна запись не соответствует критериям.
Функция ФИЛЬТР доступна только в Excel для Microsoft 365 и Excel 2021. В Excel 2019, Excel 2016 и более ранних версиях она не поддерживается.
Основная формула ФИЛЬТР Excel
Для начала давайте обсудим пару очень простых случаев, чтобы лучше понять, как работает формула Excel для фильтрации данных.
Из приведенного ниже набора данных, предположим, вы хотите извлечь записи с определенным значением в параметре Группа , столбец, скажем, группа C. Чтобы это было сделано, мы передаем выражение B2:B13="C" в включить аргумент, который создаст требуемый булевский массив, где TRUE соответствует значениям "C".
=FILTER(A2:C13, B2:B13="C", "Нет результатов")
На практике удобнее вводить критерии в отдельную ячейку, например, F1, и использовать ссылку на ячейку вместо жесткого кодирования значения непосредственно в формуле:
=FILTER(A2:C13, B2:B13=F1, "Нет результатов")
В отличие от функции "Фильтр" Excel, эта функция не вносит никаких изменений в исходные данные. Она извлекает отфильтрованные записи в так называемый диапазон разлива (E4:G7 на скриншоте ниже), начиная с ячейки, в которой введена формула:
Если ни одна запись не соответствует заданным критериям, формула возвращает значение, которое вы ввели в поле если_пустой аргумент, в данном примере "Нет результатов":
Если вы предпочитаете ничего не возвращать в этом случае, то в качестве последнего аргумента введите пустую строку (""):
=FILTER(A2:C13, B2:B13=F1, "")
В случае, если ваши данные организованы горизонтально слева направо, как показано на скриншоте ниже, функция FILTER тоже будет работать хорошо. Просто убедитесь, что вы определили соответствующие диапазоны для функции массив и включить аргументов, чтобы исходный массив и массив Boolean имели одинаковую ширину:
=FILTER(B2:M4, B3:M3= B7, "Нет результатов")
Функция Excel FILTER - указания по использованию
Чтобы эффективно фильтровать в Excel с помощью формул, необходимо обратить внимание на несколько важных моментов:
- Функция FILTER автоматически распределяет результаты по рабочему листу вертикально или горизонтально, в зависимости от того, как организованы ваши исходные данные. Поэтому, пожалуйста, убедитесь, что у вас всегда достаточно пустых ячеек внизу и справа, иначе вы получите ошибку #SPILL.
- Результаты функции ФИЛЬТР Excel являются динамическими, то есть они обновляются автоматически при изменении значений в исходном наборе данных. Однако диапазон, заданный для функции массив не обновляется при добавлении новых записей в исходные данные. Если вы хотите, чтобы аргумент массив для автоматического изменения размера, затем преобразовать его в таблицу Excel и построить формулы со структурированными ссылками или создать динамический именованный диапазон.
Как фильтровать в Excel - примеры формул
Теперь, когда вы знаете, как работает базовая формула фильтра Excel, пришло время узнать, как ее можно расширить для решения более сложных задач.
Фильтр с несколькими критериями (логика AND)
Чтобы отфильтровать данные с помощью нескольких критериев, введите два или более логических выражений для параметра включить аргумент:
FILTER(array, ( диапазон1 = критерии1 ) * ( диапазон2 = критерии2 ), "Нет результатов")Операция умножения обрабатывает массивы с помощью функции Логика И обеспечивая, чтобы только те записи, которые соответствуют все критерии возвращаются. Технически это работает следующим образом:
Результатом каждого логического выражения является массив булевых значений, где TRUE приравнивается к 1, а FALSE - к 0. Затем элементы всех массивов в одинаковых позициях перемножаются. Поскольку умножение на ноль всегда дает ноль, в результирующий массив попадают только те элементы, для которых все критерии равны TRUE, и, соответственно, только эти элементы извлекаются.
Приведенные ниже примеры показывают эту общую формулу в действии.
Пример 1. Фильтр нескольких столбцов в Excel
Расширяя нашу базовую формулу Excel FILTER немного дальше, давайте отфильтруем данные по двум столбцам: Группа (колонка B) и Выигрыши (колонка С).
Для этого мы установили следующие критерии: введите название целевой группы в 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 - даты, между которыми нужно отфильтровать.
Фильтр с несколькими критериями (логика ИЛИ)
Для извлечения данных, основанных на условии множественного ИЛИ, вы также используете логические выражения, как показано в предыдущих примерах, но вместо умножения вы их складываете. Когда массивы булевых выражений, возвращаемые выражениями, суммируются, результирующий массив будет иметь 0 для записей, которые не соответствуют ни одному критерию (т.е. все критерии FALSE), и такие записи будут отфильтрованы. Записи, для которых прихотя бы один критерий является ИСТИНОЙ, будут извлечены.
Вот общая формула для фильтрации столбцов с помощью логики OR:
FILTER(array, ( диапазон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. Чтобы получить количество, вы предоставляете один и тот же диапазон для каждой записи диапазон_критериев / критерии пара КОУНТИФОВ как это:
ФИЛЬТР( массив , COUNTIFS( столбец1 , column1, колонка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
Формула для фильтрации пустых ячеек, по сути, является вариацией формулы Excel FILTER с несколькими критериями AND. В этом случае мы проверяем, во всех ли столбцах (или определенных) есть данные, и исключаем строки, в которых хотя бы одна ячейка пуста. Чтобы определить непустые ячейки, вы используете оператор "не равно" () вместе с пустой строкой ("") следующим образом:
FILTER(array, ( столбец1 "") * ( колонка2 =""), "Нет результатов")С исходными данными в A2:C12, чтобы отфильтровать строки, содержащие одну или несколько пустых ячеек, в E3 вводится следующая формула:
Фильтр ячеек, содержащих определенный текст
Чтобы извлечь ячейки, содержащие определенный текст, можно использовать функцию ФИЛЬТР вместе с классической формулой Если ячейка содержит:
FILTER(array, ISNUMBER(SEARCH(" текст ", ассортимент )), "Нет результатов")Вот как это работает:
- Функция SEARCH ищет заданную текстовую строку в заданном диапазоне и возвращает либо число (позицию первого символа), либо ошибку #VALUE! (текст не найден).
- Функция ISNUMBER преобразует все числа в TRUE, а ошибки в FALSE и передает полученный массив булевых значений в функцию включить аргумент функции FILTER.
Для данного примера мы добавили Фамилии игроков в B2:B13, вводим часть имени, которую хотим найти, в G2, а затем используем следующую формулу для фильтрации данных:
=FILTER(A2:D13, ISNUMBER(SEARCH(G2, B2:B13)), "Нет результатов")
В результате формула извлекает две фамилии, содержащие "han":
Фильтр и вычисления (сумма, среднее, минимальное, максимальное и т.д.)
Классной особенностью функции Excel FILTER является то, что она может не только извлекать значения с условиями, но и суммировать отфильтрованные данные. Для этого сочетайте FILTER с функциями агрегации, такими как SUM, AVERAGE, COUNT, MAX или MIN.
Например, чтобы агрегировать данные для определенной группы в F1, используйте следующие формулы:
Общее количество побед:
=SUM(FILTER(C2:C13, B2:B13=F1, 0))
Средние победы:
=СРЕДНЕЕ(ФИЛЬТР(C2:C13, B2:B13=F1, 0))
Максимальные выигрыши:
=MAX(FILTER(C2:C13, B2:B13=F1, 0))
Минимальные победы:
=MIN(FILTER(C2:C13, B2:B13=F1, 0))
Обратите внимание, что во всех формулах мы используем ноль для если_пустой аргумент, поэтому формулы будут возвращать 0, если не найдено ни одного значения, удовлетворяющего критериям. Предоставление любого текста типа "Нет результатов" приведет к ошибке #VALUE, что, очевидно, последнее, чего вы хотите :)
Формула FILTER с учетом регистра
Стандартная формула Excel FILTER не чувствительна к регистру, то есть не делает различий между строчными и прописными символами. Чтобы отличить регистр текста, вложите функцию EXACT в включить аргумент. Это заставит FILTER выполнять логическую проверку с учетом регистра:
FILTER(array, EXACT( ассортимент , критерии ), "Нет результатов")Предположим, у вас есть обе группы A и a и хотим извлечь записи, где группа - это строчная буква "a". Чтобы это сделать, используйте следующую формулу, где A2:C13 - исходные данные, а B2:B13 - группы для фильтрации:
=FILTER(A2:C13, EXACT(B2:B13, "a"), "Нет результатов")
Как обычно, вы можете ввести целевую группу в предопределенную ячейку, например F1, и использовать ссылку на эту ячейку вместо жестко заданного текста:
=FILTER(A2:C13, EXACT(B2:B13, F1), "Нет результатов")
Как фильтровать данные и возвращать только определенные столбцы
По большей части фильтрация всех столбцов с помощью одной формулы - это то, что нужно пользователям Excel. Но если ваша исходная таблица содержит десятки или даже сотни столбцов, вы наверняка захотите ограничить результаты несколькими наиболее важными.
Пример 1. Фильтр некоторых соседних столбцов
В ситуации, когда вы хотите, чтобы некоторые соседние колонки появились в результатах ФИЛЬТРА, включите только эти колонки в файл массив потому что именно этот аргумент определяет, какие колонки возвращать.
В базовом примере формулы FILTER, предположим, вы хотите вернуть первые 2 столбца ( Имя и Группа ). Итак, вы поставляете A2:B13 для массив аргумент:
=FILTER(A2:B13, B2:B13=F1, "Нет результатов")
В результате мы получаем список участников целевой группы, определенной в F1:
Пример 2. Фильтр несмежных столбцов
Чтобы заставить функцию FILTER возвращать несмежные столбцы, используйте этот хитрый прием:
- Составьте формулу FILTER с нужным условием (условиями), используя всю таблицу для массив .
- Вложите приведенную выше формулу внутрь другой функции FILTER. Чтобы настроить функцию-"обертку", используйте константу массива значений TRUE и FALSE или 1 и 0 для функции включить аргумент, где TRUE (1) обозначает столбцы, которые должны быть сохранены, а FALSE (0) - столбцы, которые должны быть исключены.
Например, чтобы вернуть только Имена (1-я колонка) и Выигрыши (3-й столбец), мы используем {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).
- Для номер_столбца аргумент, используйте константу горизонтального массива, например {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))), "No result")
Первый SEQUENCE создает вертикальный массив, содержащий столько последовательных номеров, сколько указано в первом (и единственном) аргументе. Второй SEQUENCE использует функцию COLUMNS для подсчета количества столбцов в наборе данных и создает эквивалентный горизонтальный массив.
Совет. Чтобы вернуть данные из специальные колонки но не все столбцы, в константе горизонтального массива, которую вы используете для номер_столбца аргумент INDEX, включайте только эти конкретные числа. Например, чтобы извлечь данные из 1-го и 3-го столбцов, используйте {1,3}.
Функция ФИЛЬТР Excel не работает
В ситуации, когда ваша формула Excel FILTER приводит к ошибке, скорее всего, это будет одна из следующих ошибок:
#CALC! ошибка
Происходит, если опциональный если_пустой опущен, и результаты, удовлетворяющие критериям, не найдены. Причина в том, что в настоящее время Excel не поддерживает пустые массивы. Чтобы избежать подобных ошибок, убедитесь, что всегда определяете если_пустой значение в ваших формулах.
ошибка #VALUE
Происходит, когда массив и включить аргумент имеет несовместимые размеры.
#N/A, #VALUE и т.д.
Могут возникнуть различные ошибки, если какое-либо значение в включить аргумент является ошибкой или не может быть преобразован в булево значение.
#NAME ошибка
Возникает при попытке использовать FILTER в старой версии Excel. Помните, что это новая функция, которая доступна только в Office 365 и Excel 2021.
В новом Excel ошибка #NAME возникает, если вы случайно неправильно написали имя функции.
ошибка #SPILL
Чаще всего эта ошибка возникает, если одна или несколько ячеек в диапазоне разлива не являются полностью пустыми. Чтобы ее устранить, просто очистите или удалите непустые ячейки. Для изучения и устранения других случаев, пожалуйста, ознакомьтесь с разделом #SPILL! ошибка в Excel: что это значит и как исправить.
#REF! ошибка
Возникает, когда формула FILTER используется между разными рабочими книгами, а исходная рабочая книга закрыта.
Вот как динамически заполнять данные в Excel. Я благодарю вас за прочтение и надеюсь увидеть вас в нашем блоге на следующей неделе!
Скачать рабочую тетрадь для практических занятий
Фильтр в Excel с помощью формул (файл .xlsx)