Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2021 Excel 2021 для Mac Excel для iPad Excel для iPhone Excel для планшетов с Android Excel для телефонов с Android Еще…Меньше
Функция УНИК возвращает список уникальных значений в списке или диапазоне.
Возвращение уникальных значений из списка значений
Возвращение уникальных имен из списка имен
=УНИК(массив,[by_col],[exactly_once])
Функция УНИК имеет следующие аргументы:
Аргумент |
Описание |
---|---|
массив Обязательный |
Диапазон или массив, из которого возвращаются уникальные строки или столбцы |
[by_col] Необязательный |
Аргумент by_col является логическим значением, указывающим, как проводить сравнение. Значение ИСТИНА сравнивает столбцы друг с другом и возвращает уникальные столбцы Значение ЛОЖЬ (или отсутствующее значение) сравнивает строки друг с другом и возвращает уникальные строки |
[exactly_once] Необязательно |
Аргумент exactly_once является логическим значением, которое возвращает строки или столбцы, встречающиеся в диапазоне или массиве только один раз. Это концепция базы данных УНИК. Значение ИСТИНА возвращает из диапазона или массива все отдельные строки или столбцы, которые встречаются только один раз Значение ЛОЖЬ (или отсутствующее значение) возвращает из диапазона или массива все отдельные строки или столбцы |
Примечания:
-
Массив может рассматриваться как строка или столбец со значениями либо комбинация строк и столбцов со значениями. В примерах выше массивы для наших формул УНИК являются диапазонами D2:D11 и D2:D17 соответственно.
-
Функция УНИК возвращает массив, который будет рассеиваться, если это будет конечным результатом формулы. Это означает, что Excel будет динамически создавать соответствующий по размеру диапазон массива при нажатии клавиши ВВОД. Если ваши вспомогательные данные хранятся в таблице Excel, тогда массив будет автоматически изменять размер при добавлении и удалении данных из диапазона массива, если вы используете Структурированные ссылки. Дополнительные сведения см. в статье Поведение рассеянного массива.
-
Приложение Excel ограничило поддержку динамических массивов в операциях между книгами, и этот сценарий поддерживается, только если открыты обе книги. Если закрыть исходную книгу, все связанные формулы динамического массива вернут ошибку #ССЫЛКА! после обновления.
Примеры
Пример 1
В этом примере СОРТ и УНИК используются совместно для возврата уникального списка имен в порядке возрастания.
Пример 2
В этом примере аргумент exactly_once имеет значение ИСТИНА, и функция возвращает только тех клиентов, которые обслуживались один раз. Это может быть полезно, если вы хотите найти людей, которые не получали дополнительное обслуживание, и связаться с ними.
Пример 3
В этом примере используется амперсанд (&) для сцепления фамилии и имени в полное имя. Обратите внимание, что формула ссылается на весь диапазон имен в массивах A2:A12 и B2:B12. Это позволяет Excel вернуть массив всех имен.
Советы:
-
Если указать диапазон имен в формате таблицы Excel, формула автоматически обновляется при добавлении или удалении имен.
-
Чтобы отсортировать список имен, можно добавить функцию СОРТ: =СОРТ(УНИК(B2:B12&» «&A2:A12))
Пример 4
В этом примере сравниваются два столбца и возвращаются только уникальные значения в них.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
См. также
Функция ФИЛЬТР
Функция СЛУЧМАССИВ
Функция ПОСЛЕДОВ
Функция СОРТ
Функция СОРТПО
Ошибки #SPILL! в Excel
Динамические массивы и поведение массива с переносом
Оператор неявного пересечения: @
Нужна дополнительная помощь?
Возвращает относительное положение элемента в массиве или диапазоне ячеек
Возвращает ссылку на отдельную ячейку листа в виде текста
Ищет значение в первом столбце массива и возвращает значение из ячейки в найденной строке и указанном столбце
Выбирает значение из списка значений
Создает ссылку, открывающую документ, который находится на сервере сети, в интрасети или в Интернете
Выполняет поиск в первой строке массива и возвращает значение указанной ячейки
Возвращает ссылку, заданную текстовым значением
Извлекает данные реального времени из программ, поддерживающих автоматизацию COM
Использует индекс для выбора значения из ссылки или массива
Возвращает количество областей в ссылке
Ищет значения в ссылке или массиве
Возвращают данные, хранящиеся в отчете сводной таблицы
Ищет значения в векторе или массиве
Выполняет поиск в диапазоне или массиве и возвращает элемент, соответствующий первому совпадению Если совпадения не существует, то она может вернуть наиболее близкое (приблизительное) совпадение
Возвращает смещение ссылки относительно заданной ссылки
Сортировка содержимого диапазона или массива
Сортировка содержимого диапазона или массива на основе значений в соответствующем диапазоне или массиве
Возвращает номер столбца, на который указывает ссылка
Возвращает номер строки, определяемой ссылкой
Возвращает транспонированный массив
Возвращает формулу в заданной ссылке в виде текста
Фильтрация диапазона данных на основе за определенных критериев
Возвращает количество столбцов в ссылке
Возвращает количество строк в ссылке
Функции динамических массивов: СОРТ, ФИЛЬТР и УНИК
Эта статья является логическим продолжением предыдущего материала про новые динамические массивы (ДМ), появившиеся в 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
Функция UNIQUE извлекает уникальные значения из диапазона данных. Данные могут включать текст, числа, даты, значения ошибок и т. д.
Примечание: Функция УНИКАЛЬНАЯ доступна только в Excel для Microsoft 365, Excel 2021 или более поздних версиях Excel, а также в Excel для Интернета.
Синтаксис
=UNIQUE(array, [by_col], [exactly_once])
аргументы
- массив (обязательно): Диапазон или массив для получения уникальных значений.
- [by_col] (необязательно): Логическое значение, указывающее, как сравнивать данные:
- ИСТИНА, чтобы сравнить данные по столбцам;
- НЕПРАВДА or опущен, чтобы сравнить данные по строкам.
- [точно_раз] (необязательный): Логическое значение, указывающее, как определить уникальное значение:
- ИСТИНА, чтобы вернуть все отдельные строки или столбцы, которые встречаются ровно один раз из массив;
- НЕПРАВДА or опущен, чтобы вернуть все отдельные строки или столбцы из массив.
Возвращаемое значение
Функция UNIQUE возвращает массив.
Примечания к функциям
- массив может быть представлен в виде строки значений, столбца значений или комбинации строк и столбцов значений.
- Результат, возвращаемый функцией UNIQUE, будет распространяться на диапазон ячеек таким же образом, как ваши исходные данные. массив организован.
- Если у вас есть ноль (0) и пустая ячейка в массиве, UNIQUE вернет два нуля: один представляет собой пустую ячейку, а другой представляет сам ноль. Примечание. Пробел также считается отдельным значением.
- UNIQUE можно использовать между разными книгами. Однако убедитесь, что указанные книги открыты. В противном случае #REF! ошибка будет возвращена, если вы обновите ячейку результата.
- Результаты UNIQUE являются динамическими, то есть автоматически обновляются при изменении значений в исходных данных. Однако результаты не будут обновлены, если вы добавите новые записи в массив. Чтобы исправить это, вы должны использовать структурированные ссылки as массив аргумент.
Пример
Чтобы извлечь отдельные значения из списка, как показано в столбце B ниже, скопируйте или введите приведенную ниже формулу в верхнюю ячейку таблицы результатов, а затем нажмите Enter чтобы получить результат:
=УНИКАЛЬНЫЙ(B3: B16)
Примечание: Наблюдения и советы этой статьи мы подготовили на основании опыта команды by_col и точно_однажды аргументы опущены, потому что по умолчанию они сравнивают строки друг с другом и возвращают все различные значения в массиве.
Пример получения уникальных значений подряд
Чтобы извлечь уникальные значения из данных в строке C, как показано ниже, скопируйте или введите приведенную ниже формулу в самую левую ячейку таблицы результатов, а затем нажмите Enter чтобы получить результат:
=УНИКАЛЬНЫЙ(С3: J3,ИСТИНА)
Примечание: В строке результатов UNIQUE возвращает пустую строку («») и ноль (0) для пустой ячейки.
Связанные функции
Функция ФИЛЬТР Excel
Функция ФИЛЬТР фильтрует диапазон данных и динамически возвращает совпадающие результаты в соответствии с указанными вами критериями.
Функция Excel СОРТИРОВАТЬ ПО
Функция SORTBY сортирует содержимое одного диапазона или массива на основе значений в соответствующем диапазоне или массиве, независимо от того, включен ли соответствующий диапазон или массив в диапазон или массив для сортировки или нет.
Лучшие инструменты для работы в офисе
Kutools for Excel — Помогает вам выделиться из толпы
Хотите быстро и качественно выполнять свою повседневную работу? Kutools for Excel предлагает 300 мощных расширенных функций (объединение книг, суммирование по цвету, разделение содержимого ячеек, преобразование даты и т. д.) и экономит для вас 80 % времени.
- Разработан для 1500 рабочих сценариев, помогает решить 80% проблем с Excel.
- Уменьшите количество нажатий на клавиатуру и мышь каждый день, избавьтесь от усталости глаз и рук.
- Станьте экспертом по Excel за 3 минуты. Больше не нужно запоминать какие-либо болезненные формулы и коды VBA.
- 30-дневная неограниченная бесплатная пробная версия. 60-дневная гарантия возврата денег. Бесплатное обновление и поддержка 2 года.
Вкладка Office — включение чтения и редактирования с вкладками в Microsoft Office (включая Excel)
- Одна секунда для переключения между десятками открытых документов!
- Уменьшите количество щелчков мышью на сотни каждый день, попрощайтесь с рукой мыши.
- Повышает вашу продуктивность на 50% при просмотре и редактировании нескольких документов.
- Добавляет эффективные вкладки в Office (включая Excel), точно так же, как Chrome, Firefox и новый Internet Explorer.
Комментарии (0)
Оценок пока нет. Оцените первым!
Резюме
Функция UNIQUE в Excel возвращает список уникальных значений в списке или диапазоне. Значения могут быть текстом, числами, датами, временем и т. Д.
Цель
Извлечь уникальные значения из диапазона
Возвращаемое значение
Массив уникальных значений
Синтаксис
= УНИКАЛЬНЫЙ (массив; (по_колонке); (точно_одно))
Аргументы
- array — Диапазон или массив, из которого нужно извлечь уникальные значения.
- by_col — (необязательно) Как сравнивать и извлекать. По строке = ЛОЖЬ (по умолчанию); по столбцу = ИСТИНА.
- точно_once — (необязательно) ИСТИНА = значения, встречающиеся один раз, ЛОЖЬ = все уникальные значения (по умолчанию).
Версия
Excel 365
Примечания по использованию
Функция Excel UNIQUE извлекает список уникальных значений из диапазона или массива. В результате получается динамический массив уникальных значений. Если этот массив является конечным результатом (то есть не передан другой функции), значения массива будут «перетекать» на рабочий лист в диапазон, который автоматически обновляется, когда новые уникальные значения добавляются или удаляются из исходного диапазона.
Примеры
Чтобы вернуть уникальные значения из диапазона A1: A10, вы можете использовать следующую формулу:
=UNIQUE(A1:A10)
Чтобы вернуть уникальные значения из горизонтального диапазона A1: E1, установите для аргумента by_col значение TRUE или 1:
=UNIQUE(A1:E1,1) // extract unique from horizontal array
У функции UNIQUE есть необязательный аргумент, называемый even_once, который управляет тем, как функция обрабатывает повторяющиеся значения. По умолчанию точно_once — ЛОЖЬ. Это означает, что UNIQUE будет извлекать уникальные значения независимо от того, сколько раз они появляются в исходных данных. Если установлено значение TRUE или 1, UNIQUE будет извлекать только уникальные значения, которые появляются только один раз в исходных данных:
=UNIQUE(A1:A10,0,1) // values that appear once only
Похожие видео
Список повторяющихся значений с помощью FILTER В этом видео мы рассмотрим, как составить список повторяющихся значений с помощью функции FILTER. Другими словами, значения, которые встречаются в наборе данных более одного раза. Как подсчитывать уникальные значения В этом видео мы рассмотрим, как подсчитать уникальные значения, возвращаемые функцией UNIQUE, вместе с другими функциями, такими как FILTER и COUNTA. Двусторонняя сводка с помощью динамических массивов В этом видео мы рассмотрим, как создать двустороннюю сводку с помощью формул динамического массива. В результате получается сводная таблица, очень похожая на сводную таблицу. Фильтр с динамическим раскрывающимся списком В этом видео мы создадим раскрывающийся список с использованием динамических массивов для фильтрации данных по цвету. Выпадающий список создается с проверкой данных. Уникальные значения с критериями В этом видео мы рассмотрим, как использовать функцию FILTER вместе с функцией UNIQUE для ограничения результатов с использованием логических критериев. Как увидеть массивы в формулах В этом видео мы рассмотрим несколько способов увидеть или визуализировать массивы в формуле. Одна из лучших особенностей нового механизма формул динамического массива в Excel заключается в том, что в нем гораздо проще просматривать и визуализировать массивы.
Хитрости »
1 Май 2011 532031 просмотров
Как получить список уникальных(не повторяющихся) значений?
Представим себе большой список различных наименований, ФИО, табельных номеров и т.п. А необходимо из этого списка оставить список все тех же наименований, но чтобы они не повторялись — т.е. удалить из этого списка все дублирующие записи. Как это иначе называют: создать список уникальных элементов, список неповторяющихся, без дубликатов. Для этого существует несколько способов: встроенными средствами Excel, встроенными формулами и, наконец, при помощи кода Visual Basic for Application(VBA) и сводных таблиц. В этой статье рассмотрим каждый из вариантов.
- При помощи встроенных возможностей Excel 2007 и выше
- При помощи Расширенного фильтра
- При помощи формул
- При помощи кодов Visual Basic for Application(VBA) — макросы, включая универсальный код выборки из произвольного диапазона
- При помощи сводных таблиц
В Excel 2007 и 2010 это сделать проще простого — есть специальная команда, которая так и называется — Удалить дубликаты (Remove Duplicates). Расположена она на вкладке Данные (Data) подраздел Работа с данными (Data tools)
Как использовать данную команду. Выделяете столбец(или несколько) с теми данными, в которых надо удалить дублирующие записи. Идете на вкладку Данные (Data) —Удалить дубликаты (Remove Duplicates).
Если выделить один столбец, но рядом с ним будут еще столбцы с данными(или хотя бы один столбец), то Excel предложит выбрать: расширить диапазон выборки этим столбцом или оставить выделение как есть и удалить данные только в выделенном диапазоне. Важно помнить, что если не расширить диапазон, то данные будут изменены лишь в одном столбце, а данные в прилегающем столбце останутся без малейших изменений.
Появится окно с параметрами удаления дубликатов
Ставите галочки напротив тех столбцов, дубликаты в которых надо удалить и жмете Ок. Если в выделенном диапазоне так же расположены заголовки данных, то лучше поставить флаг Мои данные содержат заголовки, чтобы случайно не удалить данные в таблице(если они вдруг полностью совпадают со значением в заголовке).
Способ 1: Расширенный фильтр
В случае с Excel 2003 все посложнее. Там нет такого инструмента, как Удалить дубликаты. Но зато есть такой замечательный инструмент, как Расширенный фильтр. В 2003 этот инструмент можно найти в Данные —Фильтр —Расширенный фильтр. Прелесть этого метода в том, с его помощью можно не портить исходные данные, а создать список в другом диапазоне.
В 2007-2010 Excel, он тоже есть, но немного запрятан. Расположен на вкладке Данные (Data), группа Сортировка и фильтр (Sort & Filter) — Дополнительно (Advanced)
Как его использовать: запускаем указанный инструмент — появляется диалоговое окно:
- Обработка: Выбираем Скопировать результат в другое место (Copy to another location).
- Исходный диапазон (List range): Выбираем диапазон с данными(в нашем случае это А1:А51).
- Диапазон критериев (Criteria range): в данном случае оставляем пустым.
- Поместить результат в диапазон (Copy to): указываем первую ячейку для вывода данных — любую пустую(на картинке — E2).
- Ставим галочку Только уникальные записи (Unique records only).
- Жмем Ок.
Примечание: если вы хотите поместить результат на другой лист, то просто так указать другой лист не получится. Вы сможете указать ячейку на другом листе, но…Увы и ах…Excel выдаст сообщение, что не может скопировать данные на другие листы. Но и это можно обойти, причем довольно просто. Надо всего лишь запустить Расширенный фильтр с того листа, на который хотим поместить результат. А в качестве исходных данных выбираем данные с любого листа — это дозволено.
Так же можно не выносить результат в другие ячейки, а отфильтровать данные на месте. Данные от этого никак не пострадают — это будет обычная фильтрация данных.
Для этого надо просто в пункте Обработка выбрать Фильтровать список на месте (Filter the list, in-place).
Способ 2: Формулы
Этот способ сложнее в понимании для неопытных пользователей, но зато он создает список уникальных значений, не изменяя при этом исходные данные. Ну и он более динамичен: если изменить данные в исходной таблице, то изменится и результат. Иногда это бывает полезно. Попытаюсь объяснить на пальцах что и к чему: допустим, список с данными у Вас расположен в столбце
А
(
А1:А51
, где
А1
— заголовок). Выводить список мы будем в столбец
С
, начиная с ячейки
С2
. Формула в
C2
будет следующая:
{=ИНДЕКС($A$2:$A$51;НАИМЕНЬШИЙ(ЕСЛИ(СЧЁТЕСЛИ($C$1:C1;$A$2:$A$51)=0;СТРОКА($A$1:$A$50));1))}
{=INDEX($A$2:$A$51;SMALL(IF(COUNTIF($C$1:C1;$A$2:$A$51)=0;ROW($A$1:$A$50));1))}
Детальный разбор работы данной формулы приведен в статье: Как просмотреть этапы вычисления формул
Надо отметить, что эта формула является формулой массива. Об этом могут сказать фигурные скобки, в которые заключена данная формула. А вводится такая формула в ячейку сочетанием клавиш —
Ctrl
+
Shift
+
Enter
(при этом сами скобки вводить не надо — они появятся сами после ввода формулы тремя клавишами
Ctrl
+
Shift
+
Enter
). После того, как мы ввели эту формулу в
C2
мы её должны скопировать и вставить в несколько строк так, чтобы точно отобразить все уникальные элементы. Как только формула в нижних ячейках вернет
#ЧИСЛО!(#NUM!)
— это значит все элементы отображены и ниже протягивать формулу нет смысла. Чтобы ошибку избежать и сделать формулу более универсальной(не протягивая каждый раз до появления ошибки) можно использовать нехитрую проверку:
для Excel 2007 и выше:
{=ЕСЛИОШИБКА(ИНДЕКС($A$2:$A$51;НАИМЕНЬШИЙ(ЕСЛИ(СЧЁТЕСЛИ($C$1:C1;$A$2:$A$51)=0;СТРОКА($A$1:$A$50));1));»»)}
{=IFERROR(INDEX($A$2:$A$51;SMALL(IF(COUNTIF($C$1:C1;$A$2:$A$51)=0;ROW($A$1:$A$50));1));»»)}
для Excel 2003:
{=ЕСЛИ(ЕОШ(НАИМЕНЬШИЙ(ЕСЛИ(СЧЁТЕСЛИ($C$1:C1;$A$2:$A$51)=0;СТРОКА($A$1:$A$50));1));»»;ИНДЕКС($A$2:$A$51;НАИМЕНЬШИЙ(ЕСЛИ(СЧЁТЕСЛИ($C$1:C1;$A$2:$A$51)=0;СТРОКА($A$1:$A$50));1)))}
{=IF(ISERR(SMALL(IF(COUNTIF($C$1:C1;$A$2:$A$51)=0;ROW($A$1:$A$50));1));»»;INDEX($A$2:$A$51;SMALL(IF(COUNTIF($C$1:C1;$A$2:$A$51)=0;ROW($A$1:$A$50));1)))}
Тогда вместо ошибки
#ЧИСЛО!(#NUM!)
у вас будут пустые ячейки(не совсем пустые, конечно — с формулами :-)).
Чуть подробнее про отличия и нюансы формул ЕСЛИОШИБКА и ЕСЛИ(ЕОШ можно прочесть в этой статье: Как в ячейке с формулой вместо ошибки показать 0
Для пользователей Excel 2021 выше, а так же пользователей Excel 365(с активной подпиской) — использовать формулы для извлечения уникальных элементов проще простого. В этих версиях появилась функция
УНИК(UNIQUE)
, которая как раз получает список уникальных значений на основании переданного диапазона:
=УНИК($A$2:$A$51)
=UNIQUE($A$2:$A$51)
Что самое важное в данном случае — это функция динамического массива и вводить её надо только в одну ячейку C2, а результат она поместит сама в нужное количество ячеек.
Способ 3: код VBA
Данный подход потребует разрешения макросов и базовых знаний о работе с ними. Если не уверены в своих знаниях для начала рекомендую прочитать эти статьи:
- Что такое макрос и где его искать? к статье приложен видеоурок
- Что такое модуль? Какие бывают модули? потребуется, чтобы понять куда вставлять приведенные ниже коды
Оба приведенных ниже кода следует помещать в стандартный модуль. Макросы должны быть разрешены.
Исходные данные оставим в том же порядке — список с данными расположен в столбце «А«(А1:А51, где А1 — заголовок). Только выводить список мы будем не в столбец С, а в столбец Е, начиная с ячейки Е2:
Sub Extract_Unique() Dim vItem, avArr, li As Long ReDim avArr(1 To Rows.Count, 1 To 1) With New Collection On Error Resume Next For Each vItem In Range("A2", Cells(Rows.Count, 1).End(xlUp)).Value 'Cells(Rows.Count, 1).End(xlUp) – определяет последнюю заполненную ячейку в столбце А .Add vItem, CStr(vItem) If Err = 0 Then li = li + 1: avArr(li, 1) = vItem Else: Err.Clear End If Next End With If li Then [E2].Resize(li).Value = avArr End Sub
С помощью данного кода можно извлечь уникальные не только из одного столбца, но и из любого диапазона столбцов и строк. Если вместо строки
Range(«A2», Cells(Rows.Count, 1).End(xlUp)).Value
указать Selection.Value, то результатом работы кода будет список уникальных элементов из выделенного на активном листе диапазона. Только тогда неплохо бы и ячейку вывода значений изменить — вместо [E2] поставить ту, в которой данных нет.
Так же можно указать конкретный диапазон:
Или другой столбец:
Range("C2", Cells(Rows.Count, 3).End(xlUp)).Value
здесь отдельно стоит обратить внимание то, что в данном случае помимо изменения А2 на С2 изменилась и цифра 1 на 3. Это указание на номер столбца, в котором необходимо определить последнюю заполненную ячейку, чтобы код не просматривал лишние ячейки. Подробнее про это можно прочитать в статье: Как определить последнюю ячейку на листе через VBA?
Универсальный код выбора уникальных значений
Код ниже можно применять для любых диапазонов. Достаточно запустить его, указать диапазон со значениями для отбора только неповторяющихся(допускается выделение более одного столбца) и ячейку для вывода результата. Указанные ячейки будут просмотрены, из них будут отобраны только уникальные значения(пустые ячейки при этом пропускаются) и результирующий список будет записан, начиная с указанной ячейки.
Sub Extract_Unique() Dim x, avArr, li As Long Dim avVals Dim rVals As Range, rResultCell As Range On Error Resume Next 'запрашиваем адрес ячеек для выбора уникальных значений Set rVals = Application.InputBox("Укажите диапазон ячеек для выборки уникальных значений", "Запрос данных", "A2:A51", Type:=8) If rVals Is Nothing Then 'если нажата кнопка Отмена Exit Sub End If 'если указана только одна ячейка - нет смысла выбирать If rVals.Count = 1 Then MsgBox "Для отбора уникальных значений требуется указать более одной ячейки", vbInformation, "www.excel-vba.ru" Exit Sub End If 'отсекаем пустые строки и столбцы вне рабочего диапазона Set rVals = Intersect(rVals, rVals.Parent.UsedRange) 'если указаны только пустые ячейки вне рабочего диапазона If rVals Is Nothing Then MsgBox "Недостаточно данных для выбора значений", vbInformation, "www.excel-vba.ru" Exit Sub End If avVals = rVals.Value 'запрашиваем ячейку для вывода результата Set rResultCell = Application.InputBox("Укажите ячейку для вставки отобранных уникальных значений", "Запрос данных", "E2", Type:=8) If rResultCell Is Nothing Then 'если нажата кнопка Отмена Exit Sub End If 'определяем максимально возможную размерность массива для результата ReDim avArr(1 To Rows.Count, 1 To 1) 'при помощи объекта Коллекции(Collection) 'отбираем только уникальные записи, 'т.к. Коллекции не могут содержать повторяющиеся значения With New Collection On Error Resume Next For Each x In avVals If Len(CStr(x)) Then 'пропускаем пустые ячейки .Add x, CStr(x) 'если добавляемый элемент уже есть в Коллекции - возникнет ошибка 'если же ошибки нет - такое значение еще не внесено, 'добавляем в результирующий массив If Err = 0 Then li = li + 1 avArr(li, 1) = x Else 'обязательно очищаем объект Ошибки Err.Clear End If End If Next End With 'записываем результат на лист, начиная с указанной ячейки If li Then rResultCell.Cells(1, 1).Resize(li).Value = avArr End Sub
Способ 4: Сводные таблицы
Несколько нестандартный способ извлечения уникальных значений.
- Выделяем один или несколько столбцов в таблице, переходим на вкладку Вставка(Insert) -группа Таблица(Table) —Сводная таблица(PivotTable)
- В диалоговом окне Создание сводной таблицы(Create PivotTable) проверяем правильность выделения диапазона данных (или установить новый источник данных)
- указываем место размещения Сводной таблицы:
- На новый лист (New Worksheet)
- На существующий лист (Existing Worksheet)
- подтверждаем создание нажатием кнопки OK
Т.к. сводные таблицы при обработке данных, которые помещаются в область строк или столбцов, отбирают из них только уникальные значения для последующего анализа, то от нас ровным счетом ничего не требуется, кроме как создать сводную таблицу и поместить в область строк или столбцов данные нужного столбца.
На примере приложенного к статье файла я:
- выделил диапазон A1:B51 на листе Извлечение по критерию
- вызвал меню вставки сводной таблицы: вкладка Вставка(Insert) -группа Таблица(Table) —Сводная таблица(PivotTable)
выбрал вставить на новый лист(New Worksheet) - назвал этот лист Уникальные сводной таблицей
- поле Данные поместил в область строк
- поле ФИО в область фильтра. Почему? Чтобы удобно было выбирать одно или несколько ФИО и в сводной отображался бы список уникальных месяцев только для выбранных фамилий
В чем неудобство работы со сводными в данном случае: при изменении в исходных данных сводную таблицу придется обновлять вручную: Выделить любую ячейку сводной таблицы -Правая кнопка мыши —Обновить(Refresh) или вкладка Данные(Data) —Обновить все(Refresh all) —Обновить(Refresh). А если исходные данные пополняются динамически и того хуже — надо будет заново указывать диапазон исходных данных. И еще один минус — данные внутри сводной таблицы нельзя менять. Поэтому если с полученным списком необходимо будет работать в дальнейшем, то после создания нужного списка при помощи сводной его надо скопировать и вставить на нужный лист.
Чтобы лучше понимать все действия и научиться обращаться со сводными таблицами настоятельно рекомендую ознакомиться со статьей Общие сведения о сводных таблицах — к ней приложен видеоурок, в котором я наглядно демонстрирую простоту и удобство работы с основными возможностями сводных таблиц.
В приложенном примере помимо описанных приемов, записана чуть более сложная вариация извлечения уникальных элементов формулой и кодом, а именно: извлечение уникальных элементов по критерию. О чем речь: если в одном столбце фамилии, а во втором(В) некие данные(в файле это месяцы) и требуется извлечь уникальные значения столбца В только для выбранной фамилии. Примеры подобных извлечений уникальных расположены на листе Извлечение по критерию.
Скачать пример:
Tips_All_ExtractUnique.xls (108,0 KiB, 18 430 скачиваний)
Также см.:
Работа с дубликатами
Как подсчитать количество повторений
Общие сведения о сводных таблицах
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика