Функция ФИЛЬТР позволяет выполнять фильтрацию диапазона данных на основе определенных условий.
Описание функции ФИЛЬТР
Функция ФИЛЬТР является одной из семи функций, которые Microsoft анонсировала 24 сентября 2018 года вместе с революционным нововведением использования динамических массивов в Excel. Данная функция, как и остальные 6 и возможность использования динамических массивов не должна быть доступна пользователям, купившим Office 2019 и, тем более, более ранним версиям.
Воспользоваться новыми возможностями смогут пользователи с подпиской Office 365, а в будущем пользователи Office 2021 (следующей версией, которая следует за Office 2019), если к тому времени Microsoft попросту не оставит только вариант с подпиской.
Данная функция своим функционалом полностью замещает возможности расширенного фильтра в Excel, который хоть и предоставлял большую гибкость по сравнению с автофильтром, но многие пользователи так и не смогли освоить его использование.
Синтаксис
=ФИЛЬТР(массив; включить; [если_пусто])
Аргументы
массиввключитьесли_пусто
Обязательный. Массив или диапазон для фильтрации
Обязательный. Массив логических переменных с аналогичной высотой или шириной, что и массив. Условие записывается с использование функционала формул динамического массива, т.е. массив значений равен значению определенной ячейки.
На рисунке выше видно, что вторым аргументом записано условие: когда значение из диапазона равно Яблоко, последний, не обязательный, аргумент опущен.
Необязательный. Значение, возвращаемое, если все значения во включенном массиве пустые (фильтр не возвращает ничего)
Замечания
- Функция ФИЛЬТР (FILTER) использует возможности динамических массивов Excel, это означает, что результат вычисления будет автоматически распространяться на смежные ячейки. Также это означает, что нет необходимости фиксировать ячейки абсолютными ссылками в формуле, равно как и использовать автозаполнение;
- Если нужно отфильтровать значение по нескольким условиям, то для логического И используется знак умножения *
На рисунке выше представлен результат фильтрации по продукту Яблоко из региона Восток;
- Если нужно отфильтровать значение по нескольким условиям, то для логического ИЛИ используется знак суммирования +
На рисунке выше диапазон отфильтрован по продукту Яблоко или из региона Восток;
- Если результат вычисления формулы должен заполнить ячейки, которые уже заняты, то будет возвращена ошибка #ПЕРЕНОС!
После очистки ячейки/ ячеек, которые «стоят на пути» вычисления формулы, формула вернет результат.
Пример
Видео работы функции
Дополнительные материалы
Файл из видео.
Microsoft добавила динамические массивы в Excel и новые функции.
1) just join office insider as well, I preferred to join the insider slow, as the FAST Version was very unstable when I tried and messed up some formulas as well.
2) Sadly these functions are being made available in excel, when Google sheets been offering it for free since YEARS, IMPORTRANGE etc…
STABLE AND FORGIVING. Works on windows and Mac OS, Crossplatform.
3) I have a business premium account, but sadly I feel shortchanged as unbelievable features are available in google sheets, and these features though now have been rolled out by Office, but they do not work online when I wish to collaborate with my team, which is very primitive.
They only work on my hard drive office insider slow version.
@Chris2280
Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2021 Excel 2021 для Mac Excel 2019 Excel для iPad Excel для iPhone Excel для планшетов с Android Excel для телефонов с Android Еще…Меньше
Функция ФИЛЬТР позволяет выполнять фильтрацию диапазона данных на основе условий, которые вы определяете.
В следующем примере мы использовали формулу =FILTER(A5:D20,C5:C20=H2,»») для возврата всех записей Для Apple, как указано в ячейке H2, и если яблок нет, возвращается пустая строка («»).
Функция ФИЛЬТР фильтрует массив с учетом массива логических значений (ИСТИНА/ЛОЖЬ).
=ФИЛЬТР(массив;включить;[если_пусто])
Аргумент |
Описание |
массив Обязательный элемент |
Массив или диапазон для фильтрации |
включить Обязательный элемент |
Массив логических переменных с аналогичной высотой или шириной, что и массив. |
[если_пусто] Необязательный элемент |
Значение, возвращаемое, если все значения во включенном массиве пустые (фильтр не возвращает ничего) |
Примечания:
-
Массив может рассматриваться как ряд значений, столбец со значениями или комбинация строк и столбцов значений. В приведенном выше примере массив для нашей формулы ФИЛЬТР представляет собой диапазон A5:D20.
-
Функция ФИЛЬТР возвращает массив, который будет переноситься на другие ячейки, если является конечным результатом формулы. Это означает, что Excel будет динамически создавать соответствующий по размеру диапазон массива при нажатии клавиши ВВОД. Если ваши вспомогательные данные хранятся в таблице Excel, тогда массив будет автоматически изменять размер при добавлении и удалении данных из диапазона массива, если вы используете структурированные ссылки. Дополнительные сведения см. в статье о переносе массива.
-
Если набор данных потенциально может возвращать пустое значение, используйте третий аргумент ([если_пусто]). В противном случае возникнет ошибка #ВЫЧИС! , так как Excel в настоящее время не поддерживает пустые массивы.
-
Если какое-либо значение аргумента include является ошибкой (#N/A, #VALUE и т. д.) или не может быть преобразовано в логическое значение, функция FILTER вернет ошибку.
-
Приложение Excel ограничило поддержку динамических массивов в операциях между книгами, и этот сценарий поддерживается, только если открыты обе книги. Если закрыть исходную книгу, все связанные формулы динамического массива вернут ошибку #ССЫЛКА! после обновления.
Примеры
Функция ФИЛЬТР, используемая для возврата нескольких условий
В данном случае мы используем оператор умножения (*) для возврата всех значений в диапазоне массива (A5:D20), содержащих текст «Яблоко» И находящихся в восточном регионе: =ФИЛЬТР(A5:D20;(C5:C20=H1)*(A5:A20=H2);»»).
Функция ФИЛЬТР, используемая для возврата нескольких условий и сортировки
В данном случае мы используем предыдущую функцию ФИЛЬТР с функцией СОРТ для возврата всех значений в диапазоне массива (A5:D20), содержащих текст «Яблоко» И находящихся в восточном регионе, а затем для сортировки единиц в порядке убывания: =СОРТ(ФИЛЬТР(A5:D20;(C5:C20=H1)*(A5:A20=H2);»»);4;-1)
В данном случае мы используем функцию ФИЛЬТР с оператором сложения (+) для возврата всех значений в диапазоне массива (A5:D20), содержащих текст «Яблоко» ИЛИ находящихся в восточном регионе, а затем для сортировки единиц в порядке убывания: =СОРТ(ФИЛЬТР(A5:D20;(C5:C20=H1)+(A5:A20=H2);»»),4;-1).
Обратите внимание на то, что ни одна из функций не требует абсолютных ссылок, так как они находятся только в одной ячейке, а их результаты переносятся в соседние ячейки.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
См. также
Функция СЛМАССИВ
Функция ПОСЛЕДОВ
Функция СОРТ
Функция СОРТПО
Функция УНИК
Ошибки #ПЕРЕНОС! в Excel
Динамические массивы и поведение массива с переносом
Оператор неявного пересечения: @
Нужна дополнительная помощь?
Функции динамических массивов: СОРТ, ФИЛЬТР и УНИК
Эта статья является логическим продолжением предыдущего материала про новые динамические массивы (ДМ), появившиеся в Excel в Office 365. Если вы ещё с не ознакомились (кому лень читать — там есть видео), то очень советую сделать это сейчас, чтобы понимать о чём, собственно, идёт речь и как заполучить все эти радости в вашем Excel.
Обновление Office 365, которое подарило Microsoft Excel новый вычислительный движок с поддержкой динамических массивов, также добавило к нашему арсеналу 7 новых функций, заточенных специально для работы с массивами. В этой статье я хотел бы рассказать про три самых важных функции: СОРТ, ФИЛЬТР и УНИК. Остальные играют скорее вспомогательную роль — про них чуть позже.
Для простоты я буду во всех примерах я буду показывать работу этих функций на обычных таблицах, но можно иметь ввиду, что с «умными» таблицами (созданными через Главная — Форматировать как таблицу или сочетанием клавиш Ctrl+T) эти функции тоже отлично работают.
Итак, поехали…
Функция СОРТ (SORT)
Синтаксис:
=СОРТ(массив; [индекс_сортировки]; [порядок_сортировки]; [по_столбцу])
В самом простом варианте требует в качестве аргумента только массив (диапазон) и выдает его уже в отсортированном виде:
По умолчанию сортировка выполняется по возрастанию. Если нужен обратный порядок, то за это отвечает третий аргумент (1 — по возрастанию, -1 — по убыванию):
Если на входе указать диапазон из несколько колонок в данных, то сортировка происходит по первому столбцу. Если нужно сортировать не по первому, то в качестве второго аргумента можно указать номер столбца для сортировки:
Если хочется сортировать по нескольким столбцам сразу, то придётся задать массив номеров столбцов во втором аргументе в фигурных скобках. Одновременно аналогичным образом можно задать третьим аргументом и направление сортировки для каждого столбца.
Например, если мы хотим отсортировать наш список по городам по возрастанию и затем по суммам по убыванию, то это будет выглядеть так:
Последний аргумент используется, если нужно сортировать не строки, а столбцы, т.е. упорядочивать данные по горизонтали, что встречается существенно реже.
Вот так — просто и изящно. Особенно, если вспомнить какую монстрообразную формулу массива требовалось ввести раньше для сортировки всего лишь одного (!) столбца:
Бррр…
Функция ФИЛЬТР (FILTER)
Синтаксис:
=ФИЛЬТР(массив; включить; [если_пусто])
Назначение этой функции — принять в качестве аргумента массив исходных ячеек и отфильтровать его по заданному условию(ям). Какие строки включить в результаты, а какие убрать — определяется вторым аргументом. Он должен представлять из себя массив логических значений ЛОЖЬ (FALSE) и ИСТИНА (TRUE), задающих статус для каждой строки:
Логическую ИСТИНУ и ЛОЖЬ можно, для компактности, заменить на 1 (или любое другое число) и 0 (или пустую ячейку):
А самое интересное, что логические значения могут быть результатом какого-либо выражения, например:
Если чуть подумать, то простор для фантазии тут открывается широкий. Вот вам для затравки несколько вариантов условий, с которыми замечательно будет работать эта функция:
- =ФИЛЬТР(B2:D25; D2:D25>=10000) — отбираем все заказы, где стоимость больше или равна 10 000
- =ФИЛЬТР(B2:D25; ЛЕВСИМВ(B2:B25) = «Б») — фильтрация всех строк, где название товара начинается с «Б» (блуза, брюки, бриджи и т.д.)
- =ФИЛЬТР(B2:D25; (B2:B25 = «Брюки») * (C2:C25 = «Анна»)) — отбор всех сделок Анны, где она продавала брюки
- =ФИЛЬТР(B2:D25; (C2:C25 = «Анна») + (C2:C25 = «Иван»)) — все сделки Анны и Ивана
- =ФИЛЬТР(B2:D25; ЕСЛИОШИБКА(ПОИСК(«Самара»;A2:A25);0)) — фильтрация всех сделок, где в названии города содержится слово Самара (г. Самара, Самара г., город Самара, Самара-городок и т.д.)
Если функция ФИЛЬТР не находит ни одного значения, удовлетворяющего условию, то она выдаёт ошибку #ВЫЧИСЛ! Чтобы вывести вместо неё что-то более осмысленное, можно использовать третий аргумент:
Функция УНИК (UNIQUE)
Синтаксис:
=УНИК(массив; [по_столбцам]; [один_раз])
В самом простом варианте эта функция извлекает из входного массива все имеющиеся там значения, удаляет повторы и выдаёт то, что осталось:
Если в качестве исходного массива выделено несколько столбцов, то проверка на уникальность идёт по всем, т.е. по связке значений из всех ячеек каждой строки:
Очень интересно работает третий аргумент — он заставляет функцию извлечь из исходного массива только те данные, которые встречаются там всего один раз, т.е. не имеют клонов:
Комбинирование функций
Само-собой, никто не запрещает нам «женить» все упомянутые функций между собой — здесь-то и начинается настоящая магия, мощь и синергия.
Разберём, для примера, классическую задачу: предположим, что нам нужно сформировать справочник по городам для выпадающего списка на основе выгрузки из какой-нибудь базы данных. В исходной выгрузке города повторяются в случайном порядке, есть пустые ячейки и дубли. А необходимый нам справочник, содержащий эталонный набор городов, должен быть:
- без повторов
- без пустых ячеек
- отсортирован по возрастанию от А до Я
Делается всё вышеперечисленное одной (!) формулой:
В английской версии эта функция выглядит как:
=SORT(UNIQUE(FILTER(B2:B100000;NOT(ISEMPTY(B2:B100000)))))
Здесь:
- ФИЛЬТР — отбирает только те ячейки, где есть данные (не пусто)
- УНИК — убирает повторы в отобранном функцией ФИЛЬТР списке
- СОРТ — сортирует получившийся справочник по алфавиту
После этого останется только указать получившийся динамический массив как источник для выпадающего списка на вкладке Данные — Проверка данных (Data — Validation), не забыв добавить после адреса первой ячейки массива знак решётки:
Причем, несмотря на приличный размер исходного диапазона (100 тыс. строк!) никакого торможения при пересчёте такой формулы нет абсолютно — новый вычислительный движок Excel справляется «на ура». При этом классические формулы массива на подобных задачах начинали ощутимо подтупливать на таблицах уже с 3-5 тыс. строк, а на 100 тыс. просто загнали бы ваш Excel в кому.
Оглядываясь назад и вспоминая все свои выполненные проекты по автоматизации за последние Х лет, с грустью понимаю сколько дней и даже, наверное, недель можно было бы сэкономить, если бы динамические массивы и такие функции существовали тогда. Даааа….
Ну, лучше поздно, чем никогда, верно? По крайней мере, нашим детям точно будет проще
Ссылки по теме
- Что такое динамические массивы в новом Excel и как они работают
- Как отсортировать список формулой
- Как создать выпдающий список в ячейке листа Excel
0 / 2 / 0 Регистрация: 09.11.2020 Сообщений: 334 |
|
1 |
|
Нет функции =ФИЛЬТР28.12.2020, 12:55. Показов 6807. Ответов 38
У меня не получается сделать так как на видео https://www.youtube.com/watch?v=OOp0qGHDov8&t=514s потому что у меня нет функции ФИЛЬТР. У меня exel 2019 как добавить эту функцию ?
0 |
Часто онлайн 792 / 530 / 238 Регистрация: 09.01.2017 Сообщений: 1,820 |
|
28.12.2020, 14:18 |
2 |
Karina4, можно написать её.
0 |
0 / 2 / 0 Регистрация: 09.11.2020 Сообщений: 334 |
|
29.12.2020, 00:56 [ТС] |
3 |
КостяФедореев, Мне нужна функция поиск списка товаров по короткой фразе В ячейке B3 я ввожу текст а в ячейке С3 и ниже появляется список товаров по короткой фразе Данные нужно брать из «Данные!F:F» Файл во вложении
0 |
11482 / 3773 / 677 Регистрация: 13.02.2009 Сообщений: 11,145 |
|
29.12.2020, 01:08 |
4 |
Это проще делать с помощью формы с текстбоксом и списком на ней
1 |
11482 / 3773 / 677 Регистрация: 13.02.2009 Сообщений: 11,145 |
|
29.12.2020, 02:04 |
6 |
Сообщение было отмечено Karina4 как решение Решение поверьте с формой намного проще
1 |
11482 / 3773 / 677 Регистрация: 13.02.2009 Сообщений: 11,145 |
|
29.12.2020, 02:16 |
7 |
Сообщение было отмечено Karina4 как решение Решение а так в списке не будет дублей
2 |
0 / 2 / 0 Регистрация: 09.11.2020 Сообщений: 334 |
|
29.12.2020, 11:51 [ТС] |
8 |
Alex77755, Очень круто, спасибо А можно ли добавить чтобы в столбец D выпадал код товара из «Данные!B:B» ?
0 |
Alex77755 11482 / 3773 / 677 Регистрация: 13.02.2009 Сообщений: 11,145 |
||||||||
29.12.2020, 12:26 |
9 |
|||||||
Сообщение было отмечено Karina4 как решение Решение
тут указывается колонка. Поменяйте
А тут контролируемый диапазон. Поменяйте на нужный
1 |
0 / 2 / 0 Регистрация: 09.11.2020 Сообщений: 334 |
|
30.12.2020, 21:59 [ТС] |
10 |
Alex77755, При открытии вашего файла всплывает ошибка в модуле Barcode/ Это нормально ? Удалив этот модуль всё работает нормально, но без этого модуля мне не обойтись
0 |
11482 / 3773 / 677 Регистрация: 13.02.2009 Сообщений: 11,145 |
|
30.12.2020, 22:14 |
11 |
я не смотрел ваши макросы. У меня не выдаёт ошибки
0 |
0 / 2 / 0 Регистрация: 09.11.2020 Сообщений: 334 |
|
30.12.2020, 22:17 [ТС] |
12 |
Alex77755, Разобралась Добавлено через 3 минуты А можно ли добавить чтобы в столбец D выпадал код товара из «Данные!B:B» ? Мне нужно чтобы после выбора значения из Текстбокса чтобы в колонку B2 Сразу попадал код товара, который находиться в лист «Данные» столбце «B»
0 |
11482 / 3773 / 677 Регистрация: 13.02.2009 Сообщений: 11,145 |
|
30.12.2020, 22:47 |
13 |
можно
1 |
Karina4 0 / 2 / 0 Регистрация: 09.11.2020 Сообщений: 334 |
||||
01.01.2021, 12:15 [ТС] |
14 |
|||
Alex77755, Круто. спасибо Добавлено через 10 минут
0 |
0 / 2 / 0 Регистрация: 09.11.2020 Сообщений: 334 |
|
01.01.2021, 13:01 [ТС] |
15 |
Alex77755, С этим разобралась. Вот другой вопрос. А можно ли сделать запуск текстбокса не по клику ячейке а по
0 |
Alex77755 11482 / 3773 / 677 Регистрация: 13.02.2009 Сообщений: 11,145 |
||||
01.01.2021, 14:29 |
16 |
|||
зачем усложнять? а в другой столбец
1 |
11482 / 3773 / 677 Регистрация: 13.02.2009 Сообщений: 11,145 |
|
01.01.2021, 14:43 |
17 |
с кнопками
0 |
0 / 2 / 0 Регистрация: 09.11.2020 Сообщений: 334 |
|
01.01.2021, 17:24 [ТС] |
18 |
Alex77755, Работает с багами, после нажатия на кнопку поиска в строку вставляеться случайный товар, только при втором нажатии всплывает текстбокс Добавлено через 17 минут Спасибо. Еще вопрос, в модуле Poisk в конце пустой макрос Private Sub UserForm_Click() End Sub Он нужен или его можно удалить ?
0 |
Заблокирован |
|
01.01.2021, 17:50 |
19 |
Еще вопрос, в модуле Poisk в конце пустой макрос Пустые макросы заремируйте сначала, чтоб была возможность откатить вмешательство.
0 |
0 / 2 / 0 Регистрация: 09.11.2020 Сообщений: 334 |
|
01.01.2021, 18:09 [ТС] |
20 |
badakhshan, Ни слово не поняла
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
01.01.2021, 18:09 |
Помогаю со студенческими работами здесь Фильтр сетевой, «защищающий». Pilot или нет? До записи макроса, фильтр работает, после записи НЕТ Как правильно задать фильтр в объявленной функции Столкнулся с такой проблемой, через объявленную функцию не могу… Как правильно задать фильтр в объявленной функции Столкнулся с такой проблемой, через объявленную функцию не могу… Указатели на функции, фильтр верхнего регистра в массиве/векторе Фильтр по форме по нескольким логическим полям с использованием кнопки Общий фильтр Есть простая таблица и созданная форма. Идея в том, чтобы ставя галки осуществлять… Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 20 |