Как посмотреть уникальные значения в excel

Skip to content

Как получить список уникальных значений

В статье описано, как получить список уникальных значений в столбце с помощью формулы и как настроить эту формулу для различных наборов данных. Вы также узнаете, как быстро получить отдельный список с помощью расширенного фильтра Excel и как извлечь уникальные записи с помощью Duplicate Remover.

В нескольких недавних статьях мы обсудили различные методы подсчета и поиска уникальных значений в Excel. Если у вас была возможность прочитать эти руководства, вы уже знаете, как получить этот список при помощи идентификации, фильтрации и копирования. Но это немного длинный и далеко не единственный способ извлечения уникальных значений в Excel. Вы можете сделать это намного быстрее, используя специальную формулу. И сейчас я покажу вам этот и несколько других приёмов.

  • Формулы для уникальных значений в столбце.
  • Как извлечь уникальные + 1е вхождение дубликатов.
  • Если нужно игнорировать пустые ячейки.
  • Выбираем уникальные с учетом регистра.
  • Отбор уникальных значений по условию.
  • Как извлечь уникальные значения из диапазона.
  • Применяем встроенный инструмент удаления дубликатов.
  • Список уникальных при помощи расширенного фильтра.
  • Извлечение уникальных данных при помощи Duplicate Remover.

Базовые формулы для получения уникальных значений.

Чтобы избежать путаницы, сначала давайте договоримся о том, что мы называем уникальными значениями в Excel. 

Уникальные значения — это значения, которые присутствуют в списке только один раз. Например:

Чтобы получить список уникальных значений в Excel, используйте одну из следующих формул.

Формула уникальных значений массива (заполняется нажатием Ctrl + Shift + Enter):

=ЕСЛИОШИБКА(ИНДЕКС($A$2:$A$10; ПОИСКПОЗ(0; СЧЁТЕСЛИ($B$1:B1;$A$2:$A$10) + (СЧЁТЕСЛИ($A$2:$A$10; $A$2:$A$10)<>1); 0)); «»)

Можно воспользоваться и обычной формулой (вводится нажатием Enter):

=ЕСЛИОШИБКА(ИНДЕКС($A$2:$A$10; ПОИСКПОЗ(0;ИНДЕКС(СЧЁТЕСЛИ($B$1:B1; $A$2:$A$10) + (СЧЁТЕСЛИ($A$2:$A$10; $A$2:$A$10)<>1);0;0); 0)); «»)

В приведенных выше формулах используются следующие ссылки:

  • A2: A10 – исходных перечень данных.
  • B1 — верхняя ячейка уникального списка минус одна строка. В этом примере мы начинаем создавать список уникальных в B2, и поэтому мы записываем B1 в формулу (B2 — 1 строка = B1). Если ваш список начинается, скажем, с ячейки C3, измените $B$1:B1 на $C$2:C2.

В этом примере мы извлекаем уникальные имена из столбца A (точнее из диапазона A2: A10), а следующий скриншот демонстрирует формулу в действии:

Вот наш порядок действий:

  • Измените любую из формул в соответствии с вашим диапазоном данных.
  • Введите ее в первую ячейку, с которой начнётся формирование списка (в данном примере B2).
  • Если вы используете формулу массива, нажмите Ctrl + Shift + Enter. Если вы выбрали обычную, нажмите просто клавишу Enter.
  • Скопируйте вниз настолько, насколько это необходимо, перетащив мышкой маркер заполнения. Поскольку обе формулы заключены в функцию ЕСЛИОШИБКА, вы можете скопировать вниз с запасом. Это не испортит ваши данные какими-либо ошибками, независимо от того, сколько уникальных значений было извлечено.

Как извлечь различные значения.

Различные значения — появляются в перечне данных хотя бы один раз. Это все уникальные и первое вхождение повторяющихся значений.

Например:

Чтобы получить их список в Excel, используйте следующие формулы.

Формула массива (требуется нажать Ctrl + Shift + Enter):

{=ЕСЛИОШИБКА(ИНДЕКС($A$2:$A$13; ПОИСКПОЗ(0; СЧЁТЕСЛИ($B$1:B1; $A$2:$A$13); 0)); «»)}

или можно так:

{=ЕСЛИОШИБКА(ИНДЕКС($A$2:$A$13; НАИМЕНЬШИЙ(ЕСЛИ(ЕНД(ПОИСКПОЗ($A$2:$A$13;$B$1:B1;0)); СТРОКА($A$1:$A$15);»»);1));»»)}

Обычная  формула:

=ЕСЛИОШИБКА(ИНДЕКС($A$2:$A$13; ПОИСКПОЗ(0; ИНДЕКС(СЧЁТЕСЛИ($B$1:B1; $A$2:$A$13); 0; 0); 0)); «»)

Где:

  • A2: A13 — это список источников.
  • B1 — это ячейка над первой ячейкой отдельного списка. В этом примере отдельный список начинается с ячейки B2 (это первая ячейка, в которую вы вводите формулу), поэтому вы ссылаетесь на B1.

Как извлечь значения, игнорируя пустые ячейки

Если исходный список содержит пустые ячейки, формула, которую мы только что обсудили, вернет ноль для каждой пустой строки, что может быть проблемой. Это вы и наблюдаете на скриншоте чуть выше. Чтобы исправить это, сделаем несколько небольших корректировок.

Формула массива для извлечения различных значений, исключая пустые ячейки:

{=ЕСЛИОШИБКА(ИНДЕКС($A$2:$A$13; ПОИСКПОЗ(0;СЧЁТЕСЛИ($C$1:C1;$A$2:$A$13&»») + ЕСЛИ($A$2:$A$13=»»;1;0); 0)); «»)}

Аналогичным образом вы можете получить список различных значений, исключая пустые ячейки и ячейки с числами:

{=ЕСЛИОШИБКА(ИНДЕКС($A$2:$A$13; ПОИСКПОЗ(0;СЧЁТЕСЛИ($D$1:D1;$A$2:$A$13&»») + ЕСЛИ(ЕТЕКСТ($A$2:$A$13)=ЛОЖЬ;1;0); 0)); «»)}

Напоминаем, что в приведенных выше формулах A2: A13 – это исходный список, а B1 – ячейка прямо над первой позицией формируемого списка.

На этом скриншоте показан результат отбора:

Быть может, кому-то будет полезна еще одна формула –

=ЕСЛИОШИБКА(ИНДЕКС($A$2:$A$13; АГРЕГАТ(15;6;(СТРОКА($A$2:$A$13)-СТРОКА($A$2)+1) / (ПОИСКПОЗ($A$2:$A$13;$A$2:$A$13;0)=СТРОКА($A$2:$A$13)-СТРОКА($A$2)+1); ЧСТРОК($A$2:$A2)));»»)

Она работает с числами и текстом, игнорирует пустые ячейки.

Как извлечь отдельные значения с учетом регистра в Excel

При работе с данными, чувствительными к регистру, такими как пароли, имена пользователей или имена файлов, вам может потребоваться список отдельных значений с учетом заглавных и прописных букв. 

Для этого используйте формулу массива, где A2: A10 — это исходный список, а B1 — это ячейка над первой ячейкой отдельного списка.

Формула массива для получения различных значений с учетом регистра (требуется нажатие Ctrl + Shift + Enter)

{=ЕСЛИОШИБКА(ИНДЕКС($A$2:$A$10; ПОИСКПОЗ(0; ЧАСТОТА(ЕСЛИ(СОВПАД($A$2:$A$10; ТРАНСП($B$1:B1)); ПОИСКПОЗ(СТРОКА($A$2:$A$10); СТРОКА($A$2:$A$10)); «»); ПОИСКПОЗ(СТРОКА($A$2:$A$10); СТРОКА($A$2:$A$10))); 0)); «»)}

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

Отбор уникальных значений по условию.

Представим, что у нас есть таблица с данными о продажах. Нам необходимо определить, какие наименования товаров заказывал определенный покупатель.

Сначала отберем из таблицы только те строки, которые удовлетворяют заданным условиям, затем из этих строк выберем уникальные наименования товаров.

В ячейке G2 указываем нужного нам заказчика, а в H2 записываем эту формулу массива:

{=ЕСЛИОШИБКА(ИНДЕКС($B$2:$B$20; ПОИСКПОЗ(0;ЕСЛИ((($A$2:$A$20=$G$2)); СЧЁТЕСЛИ($H$1:H1;$B$2:$B$20);»»);0));»»)}

Не забудьте, что формулу массива нужно вводить в ячейку EXCEL с помощью одновременного нажатия CTRL+SHIFT+ENTER. Копируем ее по столбцу вниз при помощи маркера заполнения. Получаем список из четырех позиций.

Усложним задачу. Определим список не только для этого покупателя, но также и для определённого менеджера.

Вот наша формула массива:

{=ЕСЛИОШИБКА(ИНДЕКС($B$2:$B$20;ПОИСКПОЗ(0; ЕСЛИ((($A$2:$A$20=$G$2)+($D$2:$D$20=$H$2))=2; СЧЁТЕСЛИ($I$1:I1;$B$2:$B$20);»»);0));»»)}

Как видите, теперь товаров всего два. В подсчете принимают участие только те строки, которые удовлетворяют сразу двум условиям: должно совпасть название фирмы и фамилия менеджера. Только из них мы извлекаем уникальные названия товаров.

В случае, если условий будет больше, нужно просто добавить соответствующий критерий в функцию ЕСЛИ и изменить число 2 на 3 или большее (в зависимости от количества условий).

Извлечь уникальные значения из диапазона.

Формулы, которые мы описывали выше, позволяют сформировать список значений из данных определенного столбца. Но часто речь идет о нескольких столбцах, то есть о диапазоне данных. К примеру, вы получили несколько списков товаров из различных файлов и расположили их в соседних столбцах.

Используем формулу массива

{=ДВССЫЛ(ТЕКСТ(МИН(ЕСЛИ(($A$2:$C$9<>»») * (СЧЁТЕСЛИ($E$1:E1;$A$2:$C$9)=0); СТРОКА($2:$9)*100 + СТОЛБЕЦ($A:$C);7^8));»R0C00″);)&»»}

Здесь A2:C9 обозначает диапазон, из которого вы хотите извлечь уникальные значения. E1 – это первая ячейка столбца, в который вы хотите поместить результат. $2:$9 указывает на строки, содержащие данные, которые вы хотите использовать. $A:$C указывает на столбцы, из которых вы берёте исходные данные. Пожалуйста, измените их на свои собственные.

Нажмите Shift + Ctrl + Enter , а затем перетащите маркер заполнения, чтобы вывести уникальные значения, пока не появятся пустые ячейки.

Как видите, извлекаются все уникальные и первые вхождения дубликатов.

Встроенный инструмент удаления дубликатов.

Начиная с Excel 2007 функция удаления дубликатов является стандартной. Найти ее можно на вкладке  Данные > Удаление дубликатов.

Вам нужно при помощи птички указать столбцы, в которых нужно найти и удалить повторяющиеся значения. Если сделать так, как на скриншоте, то в таблице останутся только уникальные пары «Заказчик – Товар». Остальное будет удалено. Если включить только флажок «Заказчик», то останется только по одной строке для каждого заказчика и т.д.

Использование расширенного фильтра.

Если вы не хотите тратить время на выяснение загадочных поворотов формул, вы можете быстро получить список уникальных значений с помощью расширенного фильтра. Подробные инструкции приведены ниже.

  1. Выберите столбец данных, из которого вы хотите извлечь отдельные значения.
  2. Перейдите на вкладку «Данные» > группа «Сортировка и фильтр» и нажмите кнопку «Дополнительно» .
  3. В диалоговом окне Расширенный фильтр выберите следующие параметры:
    • Установите флажок Копировать в другое место .
    • В поле Исходный диапазон убедитесь, что он указан правильно.
    • В параметре Поместить результат в…   укажите самую верхнюю ячейку целевого диапазона. Помните, что вы можете копировать отфильтрованные данные только на текущий лист.
    • Выберите пункт «Только уникальные записи».
  4. Наконец, нажмите кнопку ОК и проверьте результат.

Как видите, мы проверили колонку B, и затем список уникальных наименований товара, найденных в ней, поместили в столбец K.

Обратите внимание, что хотя опция расширенного фильтра называется «Только уникальные записи», она извлекает различные значения, то есть уникальные и первые вхождения повторяющихся.

Теперь немного усложним задачу.

Если требуется искать записи не по одному, а по нескольким столбцам, то можно их предварительно «склеить» при помощи функции СЦЕПИТЬ.

=СЦЕПИТЬ(A2;B2)

Записываем это в столбец F и копируем вниз. Получаем вспомогательную колонку.

В качестве исходного диапазона мы по-прежнему выбираем данные, из которых извлекаем уникальные значения. Теперь это два столбца – A и B.

Но искать уникальные мы по-прежнему можем только в одном столбце. Вот для этого нам и пригодится вспомогательная колонка F с объединенными данными. Ее то мы и указываем в поле «Диапазон условий».

Все остальное – так же, как и в предыдущем примере.

В результате мы получили все имеющиеся в таблице комбинации «Заказчик — Товар» на основе данных во вспомогательном столбце F.

Думаю, вы понимаете, что аналогичные действия можно произвести и с тремя столбцами (например Фамилия – Имя – Отчество). Главное условие – исходный диапазон должен быть непрерывным, то есть все столбцы должны находиться рядом.

Как видите формулы здесь не нужны. Однако, если исходные данные изменятся, то все манипуляции придется повторять заново.

Извлечение уникальных значений с помощью Duplicate Remover.

В заключительной части этого руководства я покажу вам интересное решение для поиска и извлечения различных и уникальных значений в таблицах Excel. Это решение сочетает в себе универсальность формул Excel и простоту расширенного фильтра. Кроме того, здесь есть несколько уникальных функций:

  • Найти и извлечь уникальные или различные значения на основе записей в одном или нескольких столбцах.
  • Найти, выделить и скопировать уникальные значения в любое другое место в той же или другой книге Excel.

А теперь давайте посмотрим, как работает инструмент Duplicate Remover.

Предположим, у вас есть большая таблица, созданная путем объединения данных из нескольких других таблиц. Очевидно, что она содержит много повторяющихся строк, и ваша задача состоит в том, чтобы извлечь уникальные строки, которые появляются в таблице только один раз, или различные строки, включая уникальные и первые повторяющиеся вхождения. В любом случае, с надстройкой Duplicate Remover работа выполняется за несколько шагов.

  1. Выберите любую ячейку в исходной таблице и нажмите кнопку DuplicateRemover на вкладке AblebitsData в группе Dedupe.

Мастер Duplicate Remover запустится и выберет всю таблицу. Итак, просто нажмите « Далее», чтобы перейти к следующему шагу.

  1. Выберите тип значения, который вы хотите найти, и нажмите Далее :
    • Уникальные
    • Уникальные + 1е вхождения (различные)
В этом примере мы хотим извлечь различные строки, которые появляются в исходной таблице хотя бы один раз, поэтому мы выбираем опцию Unique + 1st occurences:

  1. Выберите один или несколько столбцов для проверки уникальных значений.

В этом примере мы хотим убрать все повторяющиеся значения на основе значений в 2 столбцах ( заказчик и товар), поэтому мы выбираем только нужные нам столбцы.

В нашем случае таблица имеет заголовок, поэтому отмечаем птичкой пункт My table has headers.

Думаю, нам не нужны пустые строки, которые могут случайно встретиться при объединении данных из разных таблиц. Поэтому отмечаем такжеSkip empty cells.

Если вдруг в наших записях случайно появились лишние пробелы, то, думаю, стоит их игнорировать. Поэтому отмечаем также Ignore extra spaces.

Также наш поиск буден нечувствителен к регистру, то есть не будем при сравнении данных различать прописные и строчные буквы. Поэтому  не трогаем опцию Case-sensitive match.

  1. Выберите действие, которое нужно выполнить с найденными значениями. Вам доступны следующие варианты:
    • Выделить цветом.
    • Выбрать и выделить.
    • Отметить в столбце статуса.
    • Копировать в другое место.

Чтобы не менять исходные данные, выберите «Копировать в другое место» (Copy to another location), а затем укажите, где именно вы хотите видеть новую таблицу – на этом же листе (выберите параметр «Custom Location» и укажите верхнюю ячейку целевого диапазона), на новом листе (New worksheet) или в новой книге (New workbook).

В этом примере давайте выберем новый лист:

  1. Нажмите кнопку « Готово» , и все готово!

В итоге у нас осталось всего 20 записей.

Понравился этот быстрый и простой способ получить список уникальных значений или записей в Excel? Если да, то я рекомендую вам загрузить полнофункциональную ознакомительную версию Ultimate Suite и попробовать в работе Duplicate Remover.

В Ultimate Suite for Excel также включено много других полезных инструментов, которые помогут вам сэкономить много времени. Мы о них также будем подробно рассказывать в других материалах на сайте.

Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2021 Excel 2021 для Mac Excel для iPad Excel для iPhone Excel для планшетов с Android Excel для телефонов с Android Еще…Меньше

Функция УНИК возвращает список уникальных значений в списке или диапазоне. 

Возвращение уникальных значений из списка значений

Пример использования =УНИК(B2:B11) для возврата уникального списка чисел

Возвращение уникальных имен из списка имен

Применение функции УНИК для сортировки списка имен

=УНИК(массив,[by_col],[exactly_once])

Функция УНИК имеет следующие аргументы:

Аргумент

Описание

массив

Обязательный

Диапазон или массив, из которого возвращаются уникальные строки или столбцы

[by_col]

Необязательный

Аргумент by_col является логическим значением, указывающим, как проводить сравнение.

Значение ИСТИНА сравнивает столбцы друг с другом и возвращает уникальные столбцы

Значение ЛОЖЬ (или отсутствующее значение) сравнивает строки друг с другом и возвращает уникальные строки

[exactly_once]

Необязательно

Аргумент exactly_once является логическим значением, которое возвращает строки или столбцы, встречающиеся в диапазоне или массиве только один раз. Это концепция базы данных УНИК.

Значение ИСТИНА возвращает из диапазона или массива все отдельные строки или столбцы, которые встречаются только один раз

Значение ЛОЖЬ (или отсутствующее значение) возвращает из диапазона или массива все отдельные строки или столбцы

Примечания: 

  • Массив может рассматриваться как строка или столбец со значениями либо комбинация строк и столбцов со значениями. В примерах выше массивы для наших формул УНИК являются диапазонами D2:D11 и D2:D17 соответственно.

  • Функция УНИК возвращает массив, который будет рассеиваться, если это будет конечным результатом формулы. Это означает, что Excel будет динамически создавать соответствующий по размеру диапазон массива при нажатии клавиши ВВОД. Если ваши вспомогательные данные хранятся в таблице Excel, тогда массив будет автоматически изменять размер при добавлении и удалении данных из диапазона массива, если вы используете Структурированные ссылки. Дополнительные сведения см. в статье Поведение рассеянного массива.

  • Приложение Excel ограничило поддержку динамических массивов в операциях между книгами, и этот сценарий поддерживается, только если открыты обе книги. Если закрыть исходную книгу, все связанные формулы динамического массива вернут ошибку #ССЫЛКА! после обновления.

Примеры

Пример 1

В этом примере СОРТ и УНИК используются совместно для возврата уникального списка имен в порядке возрастания.

Использование УНИК с СОРТ для возврата списка имен по возрастанию

Пример 2

В этом примере аргумент exactly_once имеет значение ИСТИНА, и функция возвращает только тех клиентов, которые обслуживались один раз. Это может быть полезно, если вы хотите найти людей, которые не получали дополнительное обслуживание, и связаться с ними.

Использование УНИК с аргументом occurs_once, для которого задано значение true, для возврата списка имен, которые встречаются только один раз.

Пример 3

В этом примере используется амперсанд (&) для сцепления фамилии и имени в полное имя. Обратите внимание, что формула ссылается на весь диапазон имен в массивах A2:A12 и B2:B12. Это позволяет Excel вернуть массив всех имен.

Использование УНИК с несколькими диапазонами для объединения столбцов имени и фамилии в столбец полного имени.

Советы: 

  • Если указать диапазон имен в формате таблицы Excel, формула автоматически обновляется при добавлении или удалении имен.

  • Чтобы отсортировать список имен, можно добавить функцию СОРТ: =СОРТ(УНИК(B2:B12&» «&A2:A12))

Пример 4

В этом примере сравниваются два столбца и возвращаются только уникальные значения в них.

Использование УНИК для возврата списка продавцов.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

См. также

Функция ФИЛЬТР

Функция СЛУЧМАССИВ

Функция ПОСЛЕДОВ

Функция СОРТ

Функция СОРТПО

Ошибки #SPILL! в Excel

Динамические массивы и поведение массива с переносом

Оператор неявного пересечения: @

Нужна дополнительная помощь?

Извлечение уникальных элементов из диапазона

Способ 1. Штатная функция в Excel 2007

Начиная с 2007-й версии функция удаления дубликатов является стандартной — найти ее можно на вкладке Данные — Удаление дубликатов (Data — Remove Duplicates):

remove-duplicates1.png

В открывшемся окне нужно с помощью флажков задать те столбцы, по которым необходимо обеспечивать уникальность. Т.е. если включить все флажки, то будут удалены только полностью совпадающие строки. Если включить только флажок заказчик, то останется только по одной строке для каждого заказчика и т.д.

Способ 2. Расширенный фильтр

Если у вас Excel 2003 или старше, то для удаления дубликатов и вытаскивания из списка уникальных (неповторяющихся) элементов можно использовать Расширенный фильтр (Advanced Filter) из меню (вкладки) Данные (Data).

Предположим, что у нас имеется вот такой список беспорядочно повторяющихся названий компаний:

uniqe1.gif

Выбираем в меню Данные — Фильтр — Расширенный фильтр (Data — Filter — Advanced Filter). Получаем окно:

uniqe2.gif

В нем:

  • Выделяем наш список компаний в Исходный диапазон (List Range).
  • Ставим переключатель в положение Скопировать результат в другое место (Copy to another location) и указываем пустую ячейку.
  • Включаем (самое главное!) флажок Только уникальные записи(Uniqe records only) и жмем ОК.

Получите список без дубликатов:

uniqe3.gif

Если требуется искать дубликаты не по одному, а по нескольким столбцам, то можно предварительно склеить их в один, сделав, своего рода, составной ключ с помощью функции СЦЕПИТЬ (CONCATENATE):

remove-duplicates2.png

Тогда дальнейшая задача будет сводиться к поиску дубликатов уже в одном столбце.

Способ 3. Выборка уникальных записей формулой

Чуть более сложный способ, чем первые два, но зато — динамический, т.е. с автоматическим пересчетом, т.е. если список редактируется или в него дописываются еще элементы, то они автоматически проверяются на уникальность и отбираются. В предыдущих способах при изменении исходного списка нужно будет заново запускать Расширенный фильтр или жать на кнопку Удаление дубликатов.

Итак, снова имеем список беспорядочно повторяющихся элементов. Например, такой:

uniqe4.gif

Первая задача — пронумеровать всех уникальных представителей списка, дав каждому свой номер (столбец А на рисунке). Для этого вставляем в ячейку А2 и копируем затем вниз до упора следующую формулу:

=ЕСЛИ(СЧЁТЕСЛИ(B$1:B2;B2)=1;МАКС(A$1:A1)+1;»»)

В английской версии это будет:

=IF(COUNTIF(B$1:B2;B2)=1;MAX(A$1:A1)+1;»»)

Эта формула проверяет сколько раз текущее наименование уже встречалось в списке (считая с начала), и если это количество =1, т.е. элемент встретился первый раз — дает ему последовательно возрастающий номер.

Для упрощения адресации дадим нашим диапазонам (например, исходя из того, что в списке может быть до 100 элементов) имена. Это можно сделать в новых версиях Excel на вкладке Формулы — Диспетчер имен (Formulas — Name manager) или в старых версиях — через меню Вставка — Имя — Присвоить (Insert — Name — Define):

  • диапазону номеров (A1:A100) — имя NameCount
  • всему списку с номерами (A1:B100) — имя NameList

Теперь осталось выбрать из списка NameList все элементы имеющие номер — это и будут наши уникальные представители. Сделать это можно в любой пустой ячейке соседних столбцов, введя туда вот такую формулу с известной функцией ВПР (VLOOKUP) и скопировав ее вниз на весь столбец:

=ЕСЛИ(МАКС(NameCount)<СТРОКА(1:1);»»;ВПР(СТРОКА(1:1);NameList;2))

или в английской версии Excel:

=IF(MAX(NameCount)

Эта формула проходит сверху вниз по столбцу NameCount и выводит все позиции списка с номерами в отдельную таблицу:

uniqe5.gif

Ссылки по теме

  • Выделение дубликатов по одному или нескольким столбцам в списке цветом
  • Запрет ввода повторяющихся значений
  • Извлечение уникальных значений при помощи надстройки PLEX

Хитрости »

1 Май 2011              532161 просмотров


Как получить список уникальных(не повторяющихся) значений?

Представим себе большой список различных наименований, ФИО, табельных номеров и т.п. А необходимо из этого списка оставить список все тех же наименований, но чтобы они не повторялись — т.е. удалить из этого списка все дублирующие записи. Как это иначе называют: создать список уникальных элементов, список неповторяющихся, без дубликатов. Для этого существует несколько способов: встроенными средствами Excel, встроенными формулами и, наконец, при помощи кода Visual Basic for Application(VBA) и сводных таблиц. В этой статье рассмотрим каждый из вариантов.

  • При помощи встроенных возможностей Excel 2007 и выше
  • При помощи Расширенного фильтра
  • При помощи формул
  • При помощи кодов Visual Basic for Application(VBA) — макросы, включая универсальный код выборки из произвольного диапазона
  • При помощи сводных таблиц

при помощи встроенных возможностей Excel 2007 и выше

В 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 431 скачиваний)

Также см.:
Работа с дубликатами
Как подсчитать количество повторений
Общие сведения о сводных таблицах


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

На чтение 11 мин. Просмотров 13.8k.

Содержание

  1. Числовые значения
  2. Текстовые значения
  3. В диапазоне с СЧЁТЕСЛИ

Числовые значения

В диапазоне

= СУММ(—(ЧАСТОТА(данные; данные)>0))

Если вам нужно подсчитать уникальные числовые значения в диапазоне, вы можете использовать формулу, которая использует частотную функцию вместе с функцией СУММ.

Количество уникальных числовых значений в диапазоне

Предположим, у вас есть список номеров сотрудников вместе с часами работы над проектом, и вы хотите знать, сколько сотрудники работали над этим проектом. Глядя на данные, вы можете увидеть одно и то же число сотрудников более одного раза, так что вы хотите подсчитать уникальные номера служащих, которые появляются в списке.

ID номера работников появляются в диапазоне B5: B14. Для того, чтобы получить количество уникальных номеров, вы можете использовать следующую формулу:

= СУММ(— (ЧАСТОТА(B5:B14; B5:B14) > 0))

Функция ЧАСТОТА возвращает массив значений, которые соответствуют интервалам. В этом случае мы сравниваем один и тот же набор чисел для массива данных и для массива интервалов.

Результатом является то, что ЧАСТОТА возвращает массив значений, которые представляют собой счетчик для каждого числового значения в массиве данных. Это работает, потому что ЧАСТОТА имеет специальную функцию, которая автоматически возвращает ноль для любых чисел, которые появляются более чем один раз в массиве данных, поэтому обратный массив выглядит следующим образом:

{3; 0; 0; 2; 0; 3; 0; 0; 2; 0; 0}

Далее, каждое из этих значений проверяется, чтобы было больше нуля. Результат выглядит следующим образом:

{ИСТИНА; ЛОЖЬ; ЛОЖЬ; ИСТИНА; ЛОЖЬ; ИСТИНА; ЛОЖЬ; ЛОЖЬ; ИСТИНА; ЛОЖЬ; ЛОЖЬ}

Теперь каждая ИСТИНА в списке представляет собой уникальный номер в списке, и нам просто нужно сложить Истинные значения с СУММ.

Однако СУММ не будет добавлять логические значения в массиве, так что мы должны сначала превратить значения в 1 или ноль. Это делается с помощью двойного минуса (двойной унарный). В результате массив только 1 или 0.

{1; 0; 0; 1; 0; 1; 0; 0; 1; 0; 0}

И, наконец, СУММ добавляет эти значения и рассчитывает общее число, которое в данном случае равно 4.

Примечание: вы можете также использовать СУММПРОИЗВ для сложения элементов в массиве.

Использование СЧЁТЕСЛИ вместо ЧАСТОТА для подсчета уникальных значений

Другой способ подсчета уникальных числовых значений состоит в использовании СЧЁТЕСЛИ вместо ЧАСТОТА. Это гораздо проще, но нужно учитывать, что с помощью СЧЁТЕСЛИ на больших наборах данных для подсчета уникальных значений может вызвать проблемы с производительностью. Формула на основе частотных полос, хотя и более сложная, вычисляет гораздо быстрее.

С критериями

{=СУММ(—(ЧАСТОТА(ЕСЛИ(criteria;значения);значения)>0))}

Если вам нужно подсчитать уникальные числовые значения в диапазоне с критериями, можно использовать формулу, основанную на СУММ и частотной функции, вместе с функцией применять критерии.

Например, предположим, у вас есть список номеров сотрудников, которые записывали часы в двух разных зданиях: здание А и здание Б. Вы хотите знать, сколько уникальных сотрудников регистрирует время в каждом здании. Так как одно и то же число сотрудников более одного раза в списке, то вам нужна формула, которая будет рассчитывать уникальные идентификаторы сотрудника в здании.

Количество уникальных значений в диапазоне с критерием

В показанном примере, формула в G4 является:

{= СУММ(— (ЧАСТОТА(ЕСЛИ(B5:B14 = «A»; C5:C14); C5:C14)> 0))}

Примечание: это формула массива и должна быть введена с помощью сочетания клавиш Ctrl+Shift+Enter

Функция ЧАСТОТА рассчитывает массив значений, которые соответствуют массиву_интервалов. В этом случае мы подставлем «отфильтрованный» набор идентификаторов для массива данных, а также полный набор идентификаторов для массива_интервалов. Фильтрация осуществляется с помощью функции ЕСЛИ:

ЕСЛИ (B5:B14 = «А»; С5:С14)

Которая в примере рассчитывает это:

{81400; 81405; 81405; 82364; 82364; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ}

Обратите внимание на то, что все идентификаторы не в здании А были преобразованы в ЛОЖЬ. Далее, ЧАСТОТА рассчитывает массив значений, которые представляют собой счетчик для каждого числового значения в массиве данных. Это работает, потому что ЧАСТОТА имеет специальную функцию, которая автоматически возвращает ноль для любых чисел, которые появляются более чем один раз в массиве данных, поэтому обратный массив выглядит следующим образом:

{1; 2; 0; 2; 0; 0; 0; 0; 0; 0; 0}

Далее, каждое из этих значений проверяется, чтобы было больше нуля. Результат выглядит следующим образом:

{ИСТИНА; ИСТИНА; ЛОЖЬ; ИСТИНА; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ}

Каждая ИСТИНА в списке представляет собой уникальный номер в списке, и нам просто нужно сложить Истинные значения с СУММ.

Однако СУММ не будет добавлять логические значения в массиве, так что мы должны сначала превратить значения в 1 или ноль. Это делается с помощью двойного минуса (двойной унарный). В результате массиве только 1 или 0.

{1; 1; 0; 1; 0; 0; 0; 0; 0; 0; 0}

И, наконец, СУММ добавляет эти значения и рассчитывает общее число, которое в данном случае составляет 3.

Текстовые значения

В диапазоне

=СУММПРОИЗВ(—(ЧАСТОТА(ПОИСКПОЗ (данные;данные;0); СТРОКА (данные)- СТРОКА (данные.первая ячейка)+1)>0))

Если вам нужно подсчитать уникальные текстовые значения в диапазоне, вы можете использовать формулу, которая использует несколько функций: ЧАСТОТА, ПОИСКПОЗ, СТРОКА и СУММПРОИЗВ.

Количество уникальных текстовых значений в диапазоне

Кроме того, можно использовать СЧЁТЕСЛИ, как описано ниже.

Предположим, у вас есть список имен сотрудников вместе с часами работы над проектом, и вы хотите знать, сколько сотрудники работали над этим проектом. Глядя на данные, вы можете увидеть, что имена повторяются, а вы хотите подсчитать уникальные имена.

Имена работников находятся в диапазоне B5:B14. Для того, чтобы получить количество уникальных имен, вы можете использовать следующую формулу:

{=СУММПРОИЗВ(— (ЧАСТОТА(ПОИСКПОЗ(B5:B14; B5:B14;0); СТРОКА(B5:B14) -СТРОКА(B5) +1)> 0))}

Эта формула является более сложной, чем аналогичная формула, которая использует ЧАСТОТА для подсчета уникальных числовых значений, поскольку ЧАСТОТА не работает с нечисловыми значениями. В результате, большая часть формулы просто преобразует нечисловые данные в числовые данные, которые может обрабатывать ЧАСТОТА.

Функция ПОИСКПОЗ используется, чтобы получить позицию каждого элемента, который появляется в данных. Поскольку ПОИСКПОЗ только рассчитывает позицию значения «Первое совпадение», которое появляется более чем один раз, в данных тот же диапазон.

Поскольку ПОИСКПОЗ принимает и массив значений для значения совпадений аргумента, она рассчитывает массив позиций. Они подаются к частотному в аргументе массива данных.

{1; 1; 1; 4; 4; 6; 6; 6; 9; 9}

Аргумент, хранимый в массиве строится из этой части формулы:

СТРОКА(B5:B14) -СТРОКА(B5) +1

который использует номер строки для каждого элемента данных и номер строки первого элемента данных для построения прямого последовательного массива:

{1; 2; 3; 4; 5; 6; 7; 8; 9; 10}

Функция ЧАСТОТА возвращает массив значений, которые соответствуют «хранимым». В этом случае мы подставляем массив, рассчитываемый ПОИСКПОЗ для массива данных, а также рассчитываемый массив построчного массива выше, как массив хранимых.

Результатом является то, что ЧАСТОТА рассчитывает массив значений, которые указывают на количество, которое появляется каждое значение в массиве данных. ЧАСТОТА имеет специальную функцию, которая автоматически рассчитывает ноль для любых чисел, которые появляются более чем один раз в массиве данных, поэтому результирующий массив выглядит следующим образом:

{3; 0; 0; 2; 0; 3; 0; 0; 2; 0; 0}

Далее, каждое из этих значений преобразуется в значение ИСТИНА или ЛОЖЬ, которые > 0, а затем в 1 или ноль с двойным отрицанием (двойной минус). Это делается потому что СУММПРОИЗВ нужны числовые значения, она не может работать непосредственно с текстом или логическими значениями.

Внутри функции СУММПРОИЗВ конечный массив выглядит следующим образом:

{1; 0; 0; 1; 0; 1; 0; 0; 1; 0; 0}

И, наконец, СУММПРОИЗВ просто добавляет эти значения и рассчитывает общее число, которое в данном случае равно 4.

Обработка пустых ячеек в диапазоне

Если какая-либо из ячеек в диапазоне пустая, и вы хотите использовать ЧАСТОТА вместо СЧЁТЕСЛИ, вам необходимо использовать более сложную формулу массива, которая включает в себя ЕСЛИ:

{= СУММ(ЕСЛИ(ЧАСТОТА(ЕСЛИ(данные <> «»;ПОИСКПОЗ(данные; данные; 0));СТРОКА(данные) -СТРОКА(данные.первая ячейка) +1); 1))}

Примечание: поскольку логическая проверка в операторе ЕСЛИ содержит массив, то формула автоматически становится формулой массива, которая требует Ctrl+Shift+Enter. Поэтому СУММПРОИЗВ был заменен СУММ.

Рассмотрим формулу изнутри, ЕСЛИ требуется, потому что ПОИСКПОЗ рассчитает # N / A, если значение совпадений содержит пустые значения. Тестируя для пустых значений с данными <> «», в том числе и ПОИСКПОЗ как значение, если оно истинно, то результирующий массив будет содержать номера в сочетании с ЛОЖЬ:

{1; 1; ЛОЖЬ; 4; 4; 6; 6; ЛОЖЬ; 9; 9}

которая подается ЧАСТОТА, что и массив данных. ЧАСТОТА будет рассчитывать массив вроде этого:

{2; 0; 0; 2; 0; 2; 0; 0; 2; 0; 0}

Элементы в этом массиве преобразуются либо в 1, или ЛОЖЬ с окончательным (внешним) ЕСЛИ заявлением. Результат выглядит следующим образом:

{1; ЛОЖЬ; ЛОЖЬ; 1; ЛОЖЬ; 1; ЛОЖЬ; ЛОЖЬ; 1; ЛОЖЬ; ЛОЖЬ}

СУММ затем складывает 1 и рассчитывает 4.

Эта формула из замечательной книги Майка Гивина по формулам массива.

Использование СЧЁТЕСЛИ вместо ЧАСТОТЫ для подсчета уникальных значений

Другой способ подсчета уникальных числовых значений состоит в использовании СЧЁТЕСЛИ вместо ЧАСТОТЫ. Эта формула гораздо проще, но нужно учитывать, что использование СЧЁТЕСЛИ на больших наборах данных для подсчета уникальных значений, может вызвать проблемы с производительностью. Формула на основе ЧАСТОТА, хоть и более сложная, но вычисляет гораздо быстрее.

С критериями

{=СУММ(—(ЧАСТОТА(ЕСЛИ(критерий;ПОИСКПОЗ(значение; значение;0));СТРОКА(значение)-СТРОКА(значение.первая ячейкаl)+1)>0))}

Для уникальных значений в диапазоне с критериями, вы можете использовать формулу массива, основанную на функции ЧАСТОТА.

Количество уникальных текстовых значений в диапазоне с критерием

Предположим, у вас есть список имен сотрудников вместе с часами работы над проектом, и вы хотите знать, сколько сотрудники работали над этим проектом. Глядя на данные, вы можете увидеть, что имена повторяются, а вы хотите подсчитать уникальные имена.

В показанном примере формула в G5 является:

= {СУММ(—(ЧАСТОТА(ЕСЛИ(C5:C11 = G4;СТРОКА(B5:B11; B5:B11;0));СТРОКА(B5:B11) — СТРОКА(B5)+1) > 0))}

Эта формула использует ЧАСТОТА для подсчета уникальных числовых значений, которые получены с помощью функции ПОИСКПОЗ, которая сравнивает все значения против самих себя, чтобы определить позицию.

Функция ПОИСКПОЗ используется, чтобы получить позицию каждого элемента, который появляется в данных. Поскольку ПОИСКПОЗ рассчитывает только позиции значения «Первое совпадение», которые появляются более чем один раз, в данных рассчитывается то же число.

С помощью ЕСЛИ ПОИСКПОЗ рассчитывает только для строк, которые соответствуют критериям.

В конце концов, массив позиций, генерируемых ПОИСКПОЗ подаются к частотному в аргументе массива данных.

Аргумент, хранимый в массиве, строится из этой части формулы:

СТРОКА(B5:B11) -СТРОКА(B5) +1

который использует номер строки для каждого элемента данных и номер строки первого элемента данных для построения прямого, последовательного массива:

{1; 2; 3; 4; 5; 6; 7; 8; 9; 10}

Функция ЧАСТОТА рассчитывает массив значений, которые соответствуют «хранимым». В этом случае мы подставляем один и тот же набор чисел, как для массива данных и хранимых для массива.

Результатом является то, что ЧАСТОТА рассчитывает массив значений, которые указывают на количество, которое появляется каждое значение в массиве данных. Это работает, потому что ЧАСТОТА запрограммирована так, чтобы рассчитывать ноль для любых чисел, которые появляются более чем один раз в массиве данных.

Далее, каждое из этих значений преобразуется в значение ИСТИНА или ЛОЖЬ, которые > 0, а затем в 1 или ноль с двойным отрицанием (двойной минус). Это сделано, чтобы превратить все ненулевые значения в 1.

Наконец, СУММПРОИЗВ просто складывает эти значения и рассчитывает общее число.

Примечание: это формула массива и должна быть введена с помощью Ctrl + Shift + Enter.

Обработка пустых ячеек в диапазоне

Если какая-либо из ячеек в диапазоне пустая, вам необходимо скорректировать формулу, добавив дополнительно ЕСЛИ для предотвращения пустых клеток, передающуюся в функцию ПОИСКПОЗ, которая сгенерирует сообщение об ошибке. Формула:

{= СУММ(— (ЧАСТОТА(ЕСЛИ(B5:B11 <> «»; ЕСЛИ(C5:C11 = G4; ПОИСКПОЗ(B5:B11; B5:B11;0))); СТРОКА(B5:B11) -СТРОКА(B5) +1)> 0))}

С двумя критериями

Если у вас есть два критерия, вы можете расширить логику формулы путем добавления другого вложенного ЕСЛИ:

= {СУММ(— (ЧАСТОТА(ЕСЛИ(c1; ЕСЛИ(c2; ПОИСКПОЗ (значения;значения;0))); СТРОКА (значения) — СТРОКА (значения.первая позиция) +1)> 0))}

Там, где c1 = критерий1, c2 = критерий2 и значения = диапазон значений.

Взято из замечательной книги Майка Гивина по формулам массива, Control-Shift-Enter.

В диапазоне с СЧЁТЕСЛИ

=СУММПРОИЗВ(1/СЧЁТЕСЛИ(данные;данные))

Если вам нужно подсчитать количество уникальных значений в диапазоне ячеек, вы можете использовать формулу, которая использует СЧЁТЕСЛИ и СУММПРОИЗВ.

Количество уникальных текстовых значений с СЧЁТЕСЛИ

СЧЁТЕСЛИ находится внутри диапазона данных и подсчитывает количество раз, которое появляется каждое отдельное значение данных. Результатом является массив чисел, который выглядит следующим образом:

{3; 3; 3; 2; 2; 3; 3; 3; 2; 2}.

После того, как СЧЁТЕСЛИ заканчивает, результаты используются в качестве делителя, 1 в качестве числителя. Значения, которые появляются в данных, после появляются в массиве как 1, но значения, которые появляются несколько раз будут отображаться как дробные значения, которые соответствуют множеству. (Т.е. значение, которое появляется в 5 раз, данные будут генерировать 5 элементов в массиве со значением 1/5 = 0,2).

Наконец, функция СУММПРОИЗВ суммирует все значения в массиве и рассчитывает результат.

Обработка пустых ячеек

Если данные могут содержать пустые ячейки, необходимо скорректировать формулу следующим образом:

=СУММПРОИЗВ(1/СЧЁТЕСЛИ(данные; данные&»»))

Данные &»» выражение предотвращает нули массива, созданного СЧЁТЕСЛИ, когда имеются пустые ячейки данных. Она делает это путем обеспечения того, что критерии для пустой ячейки «», а не ноль. Это важно, так как ноль в делителе выбросит #ДЕЛ/0. Так что эта версия формулы не будет выдавать ошибку, когда есть пустые ячейки, но она будет включать в себя пустые ячейки в счете. Если вы хотите исключить пустые ячейки в счете, используйте:

=СУММПРОИЗВ((данные <> «»)/СЧЁТЕСЛИ(данные;данные и «»))

Низкая производительность?

Это крутая и элегантная формула, но она вычисляет гораздо медленнее, чем формулы, которые используют ЧАСТОТА для подсчета уникальных значений. Для больших наборов данных, вы можете переключиться на формулу, основанную на частотную функцию.

Подсчёт уникальных значений в Excel

​Смотрите также​2. Вычисление количества​: ,Sanja,я конечно ниче​ IsObject(Conditions(J)) Then rngCond​

  1. ​Придумал вариант с​​Казанский​​Start! = Timer​aOld = [a1:a12000]​ макросы и UDF!!!​​: да, коллекции медленнее​​ алгоритму еще добавить​

    ​ уникальных значений...​
    ​For Each iCell​

    Подсчёт уникальных значений в Excel

  2. ​ (иначе получим ошибку​ Ctrl + Shift​​ Функция частота использует​​Автор: Антон Андронов​Этот пример показывает, как​​ уникальных числовых и​​ не понял, ну​

    ​ = Conditions(J).Value If​
    ​ доп.столбцом, однако способ​

    Подсчёт уникальных значений в Excel

  3. ​: У меня ввод​​On Error Resume​​str = «»​

    Подсчёт уникальных значений в Excel

​Казанский​​ чем массив, но​ считываение диапазона в​Alex_ST​ In Диапазон​ деления на 0​ + Ввод.​ результирующее значение рассчитывается​Примечание:​ создать формулу массива,​

​ текстовых значений (не​

  • ​ штучка прикольная. это​ IsNumeric(rngCond(I, 1)) Then​​ будет неудобен при​​ формулы в ячейку​ Next​For i =​: Интересно! А функция​
  • ​ скорость выявления уникальности​ массив..​: К стати, знатоки​If iCell.Value <>​ в дроби):​Чтобы просмотреть процесс вычисления​ соответствующих текстовых значений.​Мы стараемся как​ которая подсчитает уникальные​
  • ​ работает, если есть​ наверное аналог счётеслимн?​
  • ​ If Application.Evaluate(Replace(rngCond(I, 1),​ большом количества сетей,​ листа 14,5 с,​​MyArray = [a1:a12000]​​ 1 To UBound(aOld)​ листа как таковая?​

​ ключей очень высока​а в этой​
​ VBA, помогите, плиз…​
​ «» Then .Add​

​Вот и все дела.​

office-guru.ru

Подсчет количества уникальных значений среди повторяющихся

​ функции по шагам,​​Функция LEN используется для​ можно оперативнее обеспечивать​ значения.​ пустые ячейки)​Sanja​ «,», «.») &​ тогда придется для​ «СЧЁТ_РАЗНЫХ_3» 28,9 с.​For Each a​If InStr(1, str,​Serge​ (подразумеваю, что ключи​ элегантной формуле перебор​Что-то у меня​ iCell.Value, Trim(iCell.Value)​karl311​ выделите ячейку с​ поиска пустых ячеек.​ вас актуальными справочными​Воспользуемся функцией​=SUM(IF(FREQUENCY(MATCH(B2:B10;B2:B10;0);MATCH(B2:B10;B2:B10;0))>0;1))​

​: Можно и так​ Conditions(J + 1))​ каждого создавать доп.столбцы​ Ровно в 2​ In MyArray​ aOld(i, 1)) =​: Ага, а потом​​ там хранятся упорядоченно)​ происходит не один​​ не получается сделать​Next​: Здравствуйте.​ формулой, а затем​​ Пустые ячейки иметь​​ материалами на вашем​COUNTIF​=СУММ (ЕСЛИ (ЧАСТОТА​

​ сказать. Название говорит​ Then arrFlag(Int(J /​Заранее благодарю!​

  • ​ раза. Интересно, почему?​Col.Add a, CStr(a)​ 0 Then str​

  • ​ выясняется что расчётный​ — в этом​

  • ​ раз, а по​ на основе этой​СЧЁТ_РАЗНЫХ = .Count​Нужна небольшая Ваша​ на вкладке​ длину 0 (количество​ языке. Эта страница​(СЧЁТЕСЛИ). Для примера​ (ПОИСКПОЗ (B2:B10;B2:B10;0);ПОИСКПОЗ (B2:B10;B2:B10;0))>0;1))​ само за себя​ 2)) = True​Dmitriy XM​слэн​

  • ​Next a​ = str &​ файл не работал​ и выигрыш. Еще​ количеству элементов -​ классной формулы UDF​

  • ​End With​ помощь. Уже не​Формулы​ символов).​ переведена автоматически, поэтому​

Пример

​ подсчитаем количество чисел​3. Вычисление количества​ СЧЕТ​ Else If rngCond(I,​:​: не помню с​

​’Если работа с​

​ aOld(i, 1) &​

​ у начальника на​

​ быстрее конструкция dictionarys..​

​ для каждого из​

​ (ну, чтобы потом​

​End Function​

​ первый день ломаю​

​в группе​

​Скопируйте таблицу в ячейку​

​ ее текст может​

​ 5 в диапазоне​

​ уникальных значений (универсальная​

​УНИК​

​ 1) Like Conditions(J​

​=СЧЁТЕСЛИМН(D2:D16;»Магнит»;E2:E16;»>»&0)​

​ кем мы оттачивали​

​ коллекцией далее неприемлема,​

​ «|»​

​ деловой презентации потому​

​ и удобнее. Но​

​ элементов массива происходит​

​ формулы писАть было​Alex_ST​ голову над этой​Зависимости формул​ A1 на пустом​

​ содержать неточности и​

​A1:A6​ формула)​ЕСЛИМН. В отличии от​ + 1) Then​Олег55​ скорость этого алгоритма​

​ то перебросить её​

​Next i​ что макросы отключены​ требует подключения доп​ перебор всех «остальных​ проще и не​: К стати, kim,​

​ задачкой. Нужно подсчитать​​нажмите кнопку​

  • ​ листе в Excel​ грамматические ошибки. Для​, используя следующую формулу:​=SUM(IF(FREQUENCY(IF(LEN(A2:A10)>0;MATCH(A2:A10;A2:A10;0);»»);IF(LEN(A2:A10)>0;MATCH(A2:A10;A2:A10;0);»»))>0;1))​ обычное СЧЕТЕСЛИМН подсчитывает​ arrFlag(Int(J / 2))​: Дмитрий, благодарю, что​ — точно с​ в массив​

  • ​aNew = Split(str,​ были.​ библиотеки.​ элементов», сравнение с​ указывать два раза​​ не посоветуете,​​ количество уникальных значений​​Вычисление формулы​​ для работы с​​ нас важно, чтобы​​=COUNTIF(A1:A6,5)​

support.office.com

Подсчет количества уникальных значений

Постановка задачи

​=СУММ (ЕСЛИ (ЧАСТОТА​ количество УНИКАЛЬНЫХ значений​ = True End​ не остались равнодушны​

Excel подсчет уникальных значений

​ ZVI, а вот​ReDim NewMyArray(1 To​ «|») ‘ последнее​И стоя на​Alex_ST​ условием и увеличение​ диапазон)​а как в​

​ в массиве и​.​

Способ 1. Если нет пустых ячеек

​ примерами формул, использующих​ эта статья была​=СЧЁТЕСЛИ(A1:A6;5)​ (ЕСЛИ (ДЛСТР (A2:A10)>0;ПОИСКПОЗ​alex1210​ If Next If​

Excel подсчет уникальных значений

​ к проблеме! Однако​ еще учавствовал или​ Col.Count)​ значение пустое​ бирже труда макрописец​: По просьбам слушателей​

​ индекса, если условие​Даже без игнорирования​ формуле =СУММПРОИЗВ(1/СЧЁТЕСЛИ(A4:P16;A4:P16)) обойти​ частоту их появления,​Есть диапазон с данными,​ функции.​ вам полезна. Просим​​Чтобы подсчитать уникальные значения,​ ​ (A2:A10;A2:A10;0);»»);ЕСЛИ (ДЛСТР (A2:A10)>0;ПОИСКПОЗ​​: ААААААААААААААААААА, круто​ WorksheetFunction.And(arrFlag) = True​ Ваш вариант считает​ degassad или Anik..​

Excel подсчет уникальных значений

​For i =​​For i =​​ упрямо повторяет себе:​ во время обеденного​ выполнено.​ пустых ячеек…​ ошибку #ДЕЛ/0! если​

Excel подсчет уникальных значений

Способ 2. Если есть пустые ячейки

​ т.е. значение «7»​ в котором некоторые​Данные​ вас уделить пару​ добавим функцию​ (A2:A10;A2:A10;0);»»))>0;1))​Akropochev​ Then .Add CStr(cl(I,​

Excel подсчет уникальных значений

​ количество накладных сети​

planetaexcel.ru

Подсчет количества уникальных значений в массиве

​ но там было​​ 1 To Col.Count​

​ 0 To UBound(aNew)​ «А у меня​ перерыва (раньше работа​я уж не​Пытаюсь сделать так:​ в диапазоне попадается​ столько то раз,​ значения повторяются больше​Данные​ секунд и сообщить,​SUM​Последнюю формулу нужно​: Олег55, добрый день​

​ 1)), cl(I, 1)​

​ Магнит с бонусом​​ чуточку точнее в​’ NewMyArray(i) =​ — 1​
​ считает-то всё-равно быстрее»…​ мешала) сделал сравнение​

​ говорю о последующем​​Function СЧЁТ_РАЗНЫХ_2(Диапазон As​

​ хотя бы одна​​ значение «12» столько​
​ одного раза:​
​986​ помогла ли она​
​(СУММ), 1/, и​ вводить как формулу​Мой вариант немассивной​

​ If Err =​ больше нуля, а​
​ конце​
​ Col(i)​Cells(i + 1,​
​Брр.​
​ разных методов подсчёта​ делении и опять​
​ Range) As Long​
​ пустая ячейка?​ то раз и​Задача — подсчитать количество​
​Руслан​
​ вам, с помощью​ заменим 5 на​
​ массива, т. е.​ формулы​ 0 Then СЧЕТУНИКЕСЛИМН​ мне нужно вычислить​
​Alex_ST​
​Cells(i, 2) =​
​ 2) = aNew(i)​слэн​
​ числа уникальных значений​ суммировании..​
​’=СУММПРОИЗВ(1/СЧЁТЕСЛИ(Диапазон;Диапазон))​kim​
​ т.д.​
​ уникальных (неповторяющихся) значений​Дмитрий​
​ кнопок внизу страницы.​A1:A6​ нажать не просто​
​=СУММПРОИЗВ(—(ПОИСКПОЗ(B2:B16*(D2:D16=L2)*(E2:E16>0);B2:B16*(D2:D16=L2)*(E2:E16>0);0)=(СТРОКА(B2:B16)-СТРОКА(B2)+1)*(D2:D16=L2)*(E2:E16>0)))​
​ = СЧЕТУНИКЕСЛИМН +​
​ количество точек, т.е.​
​: По совету слэн’a​

​ Col(i)​​Next​: и еще можно​
​ в диапазоне.​Михаил С.​With Application.WorksheetFunction​: =СУММПРОИЗВ(1/СЧЁТЕСЛИ(A4:P16;A4:P16&»»))-1​Заранее благодарен.​ в диапазоне. В​

​563​​ Для удобства также​

​.​​ Enter, а Ctrl​
​Олег55​ 1 Else Err.Clear​ количество уникальных значений​
​ попробовал ещё подсократить​Next​Cells(2, 5) =​ немножко причесать.. :)​
​Конечно, создавать «массив​: ну может вы​СЧЁТ_РАЗНЫХ_2 = .SumProduct(1​

​Alex_ST​​kim​ приведенном выше примере,​
​67​ приводим ссылку на​=SUM(1/COUNTIF(A1:A6,A1:A6))​ + Shift +​: , , большое​ End If End​ по столбцу ИД​ время выполнения СЧЁТ_РАЗНЫХ_2.​Cells(4, 5) =​

​ Timer — Start​​например, зачем в​ из миллиона случайных​ и правы;​

​ / .CountIf(Диапазон, Диапазон))​​: Спасибо.​: Для этого нужна​ как легко заметить,​789​ оригинал (на английском​
​=СУММ(1/СЧЁТЕСЛИ(A1:A6;A1:A6))​ Enter. После этого​ спасибо, что не​ If Next End​ точки для сети​Попытался сначала заменить​ Timer — Start​Cells(2, 6) =​ коллекцию передавать значение,​ чисел в диапазоне​=СУММПРОИЗВ(1/СЧЁТЕСЛИ(A4:P16;A4:P16&»»))-ИЛИ(A4:P16=»»)​

​End With​​А почему -1​ функция СЧЁТЕСЛИ()- масса​
​ на самом деле​235​ языке) .​Закончим ввод формулы нажатием​ в строке формул​ остались в стороне​ With End Function​ Магнит и бонуса​ в цикле в​
​Cells(4, 6) =​ UBound(aNew) + 1​
​ если нужно только​
​ 1…200 000″ я​тоже массив​
​End Function​
​ в конце формулы​
​ примеров на форуме.​ упоминаются всего четыре​
​Руслан​
​Предположим, что вы хотите​

​Ctrl+Shift+Enter​

​ мы увидим, что​​ от моей проблемы!​
​Jack Famous​
​ больше нуля. В​ ключе коллекции CStr(tmpArr(i,​

​ Col.Count​​[CalcTime] = Timer​
​ посчитать?​ не стал, т.к.​Alex_ST​выдаёт #ЗНАЧ!​ вдруг появилось?​Для подсчета уникальных:​ варианта.​Дмитрий​
​ узнать, сколько уникальных​.​ формула взята в​ Разобрал принципы работы​: Sanja, какая крутая​
​ данном примере таковых​
​ j)) на tmpArr(i,​
​[CalcTime] = Timer​

​ — Start​​передавайте только ключ​ времени жалко, но​

​: Не понял, зачем?​Михаил С.​
​Уникальных значений раньше​
​ =СУММПРОИЗВ(1/СЧЁТЕСЛИ(A4:P16;A4:P16))​Рассмотрим несколько способов ее​689​ текстовых и числовых​
​Примечание:​

​ фигурные скобки ({}),​​ ваших вариантов, принял​ UDF’ка​

​ будет пять.​ j):​ — Start​End Sub​слэн​ с меньшим размером​

​Быстрее работать что​: массив​ было 48, а​Hugo​ решения.​789​ значений в диапазоне​Строка формул указывает,​ это признак того,​ к сведению, буду​пасиба)))​По одной точке​

​If tmpArr(i, j)​End Sub​Sub btnCollections1_Click()​: или пересчет был​

​ попробовал.​​ ли будет если​=СУММ(1/(ЕСЛИ(СЧЁТЕСЛИ(A4:P16;A4:P16);СЧЁТЕСЛИ(A4:P16;A4:P16);1)))-СЧЁТЕСЛИ(A4:P16;»»)​
​ теперь вдруг получилось​
​: СЧЁТЕСЛИ​

​Если вы уверены, что в​​Дмитрий​
​ есть. Например, если​ что это формула​ что введенная формула​ теперь пользоваться наиболее​alex1210​ может быть несколько​ <> «» Then​Sub btnDictionary_Click()​Dim NewMyArray(), MyArray​ отключен :)​Так вот, при​

​ я сначала скопирую​Если пустые не​ 47.​Alex_ST​ исходном диапазоне данных​143​ столбец содержит текст​ массива, заключая её​ массива.​ удобным в зависимости​: Sanja, Jack Famous,​ накладных, причем как​ .Add tmpArr(i, j),​Dim NewMyArray, MyArray,​Dim Col As​Serge​ обработке массива из​

​ диапазон во временный​​ считаем за уникальные​

​Да и мой​​: kim,​ нет пустых ячеек,​56​
​ значения​ в фигурные скобки​Полосатый жираф алик​ от ситуации​

​ доброго времени, подскажите​​ с бонусом, так​ tmpArr(i, j)​ D​ New Collection​: Не согласен. Для​ 10 000 цифр​ массив, а потом​Alex_ST​ макрос говорит, что​=СУММПРОИЗВ(1/СЧЁТЕСЛИ(A4:P16;A4:P16))- это здОрово!​ то можно использовать​237​

​Руслан «,» Сергей «,»​​ {}. Их не​: Напиши в C1​Fabol​ ячейки B2:B16 какое​ и без него​заработало. Время уменьшилось​Start! = Timer​
​Start! = Timer​ того что бы​ от 0 до​ буду брать по​: Михаил,​ их всё-таки 48…​Элементарно просто и​ короткую и элегантную​
​67​ Сергей, Сергей​ нужно вводить самостоятельно.​ =A1&B1​: Как посчитать количество​ условие выполняют, не​ (т.е. ноль)​
​ почти вдвое :​On Error Resume​On Error Resume​ пересчёт отключить надо​ 100 на моём​
​ одному элементу массива​так может быть​
​kim​ элегантно.​ формулу массива:​235​, имеется два уникальных​ Они исчезнут, когда​Скопируй её до​
​ одинаковых значений в​ могу разобраться​
​Сергей​ стало 0,047 сек.​ Next​
​ Next​ лесть в настройки,​

​ не шустром рабочем​ и пытаться добавить​ и будет работать​: Алексей, поищите огрехи​Не встречал такого​Не забудьте ввести ее​

​Формула​ значения — Руслан​ вы начнете редактировать​ С5. Чтобы не​

​ таблице (уникальных)?​​Jack Famous​: доп столбец один​

​НО возникли сомнения,​​Set D =​MyArray = [a1:a12000]​ а это мало​ компе получилось следующее:​ его в коллекцию​ (честно говоря, даже​ в макросе :)​
​ раньше, поэтому написАл​ как формулу массива,​Описание (результат)​ и Сергей. Если​ формулу.​
​ видеть формулы, можно​

​AlexM​​: alex1210, здравствуйте!​ для всех сетей​

​ а С ЛЮБЫМИ​ CreateObject(«Scripting.Dictionary»)​For Each a​ кто делает (я​

​1. Мой макрос​

​ (метод проверки уникальности​​ не проверял), но​Дело в том,​

​ UDF:​​ т.е. нажать после​=СУММ(ЕСЛИ(ЧАСТОТА(A2:A10,A2:A10)>0,1))​ диапазон содержит числа​Пояснение:​ выбрать в формате​: В таблице посчитать​Ну, как я​Sanja​ ЛИ ТИПАМИ ДАННЫХ​MyArray = [a1:a12000]​ In MyArray​ вообще ещё не​ с прямым считыванием​ по Уокенбаху)?​ в вашем примере​ что в таком​
​Function СЧЁТ_РАЗНЫХ(Диапазон As​ ввода формулы не​Подсчет количества уникальных числовых​

​5, 6, 7, 6​​Диапазон (массив констант), созданный​ белый ШРИФТ.​ можно, а в​ понял, это уникальный​

​: UDF (пользовательская функция)​
​ это будет корректно​
​For Each a​
​Col.Add a, CStr(a)​
​ встречал таких сотрудников​

​ значений из диапазона​

​Я, к стати,​
​ теряется вся простота​ виде, формула интерпретирует​ Range) As Long​
​ Enter, а сочетание​
​ значений в диапазоне​
​, уникальные значения —​
​ с помощью функции​А в В6​
​ картинке не получится​числовой​ Function СЧЕТУНИКЕСЛИМН(rngU As​ работать? Ведь об​ In MyArray​Next a​
​ кто знает как​
​ и добавлением в​ искал где-нибудь данные​ и элегантность предложенной​

​ пусто как еще​’—————————————————————————————​ Ctrl+Shift+Enter.​
​ A2:A10 без учета​ 5, 6 и​
​COUNTIF​
​ напиши =СУММ (1/СЧЁТЕСЛИ​Fabol​
​идентификатор конкретной точки​ Range, ParamArray Conditions())​

​ ошибке работы макроса​D.Add CStr(a), a​
​’Если работа с​

​ это делается). А​
​ коллекцию​
​ о скорости выполнения​ kim формулы…​
​ одно уникальное, вот​
​’ Procedure :​Технически, эта формула пробегает​
​ пустых ячеек и​
​ 7.​(СЧЁТЕСЛИ), хранится в​
​ (C1:C5;C1:C5))​
​: AlexM,​
​ (как её адрес,​ As Long ‘rngU​ никак не узнаешь,​Next a​
​ коллекцией далее неприемлема,​ вот уровень безопасности​
​СЧЁТ_РАЗНЫХ_1 — 0,44​
​ операций с коллекциями,​Ну, разве можно​
​ мы его и​ СЧЁТ_РАЗНЫХ​
​ по всем ячейкам​ текстовых значений (4)​
​Чтобы подсчитать только уникальные​
​ памяти Excel, а​
​Пробелы перед скобками​AlexM​
​ например, только в​ — диапазон поиска​
​ т.к. включен обработчик​NewMyArray = D.Items​
​ то перебросить её​

​ АЙтишники всегда ставят​
​ сек.​
​ но не нашел…​ сравнить по трудоёмкости​
​ отнимаем. Для более​
​’ Author :​ массива и вычисляет​
​=СУММ(ЕСЛИ(ЧАСТОТА(ПОИСКПОЗ(B2:B10,B2:B10,0),ПОИСКПОЗ(B2:B10,B2:B10,0))>0,1))​
​ значения, используйте следующие​ не в ячейках​
​ удалить из формулы.​
​: Уникальные — это​
​ виде числа)​ уникальных значений, обязательный​ ошибок​For i =​
​ в массив​ высокий и тут​
​2. Мой доработанный​ Что-то мне подсказывает,​
​ написания и возможному​ простого визуального восприятия​
​’ Topic_HEADER :​ для каждого элемента​
​Подсчет количества уникальных текстовых​
​ функции:​ листа.​
​ Вводить, как формулу​ такие значения, которые​
​Sanja​ ‘Conditions() — массив​

​Я с коллекциями​

​ 0 To UBound(NewMyArray)​
​’ReDim NewMyArray(1 To​ уже необходимы знания​
​ макрос с предварительным​
​ что она не​ при этом количеству​
​ уменьшил проверяемый диапазон.​ Функция СЧЁТ_РАЗНЫХ (UDF)​
​ количество его вхождений​
​ и числовых значений​Используйте функции Если для​
​Массив констант выглядит следующим​
​ массива. Как было​
​ в таблице встречаются​
​: Так это у​ ПАР значений вида:​
​ знаком мало, поэтому​Cells(i + 1,​
​ Col.Count)​
​ что бы их​ копированием из диапазона​
​ слишком велика (ну,​ ошибок формулы:​
​слэн​’ Topic_URL :​
​ в диапазон с​

​ в диапазоне B2:B10,​
​ присвоения значения 1​
​ образом: {3;1;1;1;3;3}, что​ указано выше -​
​ всего один раз.​ автора спросите​
​ Диапазон_Условий1;Условие1;Диапазон_Условий2;Условие2…Диапазон_УсловийN;УсловиеN, обязательный ‘​ и сомневаюсь…​
​ 2) = NewMyArray(i)​

​i = 1​ (макросы) включить.​

​ в массив и​​ по крайней мере​=СУММПРОИЗВ(1/СЧЁТЕСЛИ(A4:P16;A4:P16))​: да, но если​’ Post_Author :​ помощью функции​ который не должен​

​ каждому истинному условию.​​ обозначает: три числа​ в конце ввода​=СУММПРОИЗВ(Ч(СЧЁТЕСЛИ(A1:J10;A1:J10)=1))​ЦитатаОлег55 написал: …количество​ должен иметь хотя-бы​Попытки вместо значения​Next​For Each a​Так что это​ добавлением в коллекцию​

​ не выше, чем​​и формулу массива​ пустых ячеек все​ Alex_ST & The_Prist​
​СЧЕТЕСЛИ​ содержать пустые ячейки​Используется функция сумм для​ 7, одно значение​ нажать не Enter,​
​Fabol​ уникальных значений по​ одну пару значений.​ добавлять только ключ:​
​Cells(5, 5) =​ In Col​ не одно и​
​ уже из этого​ обращение к ячейке​={СУММ(1/(ЕСЛИ(СЧЁТЕСЛИ(A4:P16;A4:P16);СЧЁТЕСЛИ(A4:P16;A4:P16);1)))-СЧЁТЕСЛИ(A4:P16;»»)}​ же нет? :)​ & Лузер™​(COUNTIF)​ (7)​ сложения уникальных значений.​ «sun», одно значение​
​ а сочетание Ctrl+Shift+Enter.​: AlexM, а количество​ столбцу ИД…это и​

​ ‘Все диапазоны должны​If tmpArr(i, j)​
​ Timer — Start​’ NewMyArray(i) =​ тоже…​ массива​
​ диапазона). Поэтому, наверное,​Казанский​

planetaexcel.ru

Подсчет уникальных значений в столбце по двум условиям

​Alex_ST​​’ Post_URL :​. Если представить это​
​=СУММ(ЕСЛИ(ЧАСТОТА(ЕСЛИ(ДЛСТР(A2:A10)>0,ПОИСКПОЗ(A2:A10,A2:A10,0),»»),ЕСЛИ(ДЛСТР(A2:A10)>0,ПОИСКПОЗ(A2:A10,A2:A10,0),»»))>0,1))​Функция частота позволяет выполнить​ «moon», одно число​Алексей матевосов (alexm)​ одинаковых можно посчитать,​ есть диапазон B2:B16​ состоять из одного​ <> «» Then​
​Cells(5, 6) =​ a​Hugo​СЧЁТ_РАЗНЫХ_2 — 0,094​ выигрыш в скорости​: Вкладывать worksheetfunction’ы так​
​: Макрос считает правильно.​

​’ DateTime :​​ в виде дополнительного​​Подсчет количества уникальных текстовых​

​ подсчет количества уникальных​​ 5, три числа​: =СУММ (1/МУМНОЖ (—(A1:A5&B1:B5=ТРАНСП​ например (36.46-3; 36.41-5;​Олег55​ столбца и иметь​ .Add «», tmpArr(i,​ UBound(NewMyArray) + 1​Cells(i, 2) =​: У меня есть​ сек.​ при использовании массива​ нельзя.​ Проверялось не раз​ 06.04.10, 12:00​ столбца, то выглядело​ и числовых значений​
​ значений. Эта функция​ 7, три числа​ (A1:A5&B1:B5));{1:1:1:1:1}))​ 36.29-2…)?​: От души большое​ равное кол-во строк​

​ j)​​[CalcTime] = Timer​ a​

​ такие цифры при​​3. Макрос, реализующий​ вместо прямого обращения​Function СЧЁТ_РАЗНЫХ_2(Диапазон As​ (в том числе​’ Purpose :​ бы оно так:​ в диапазоне A2:A10​ игнорирует текстовые и​ 7.​Формула массива, ввод​AlexM​ спасибо! оба варианта​ Dim cl() Dim​к ускорению не​ — Start​i = i + 1​ копировании 3000 уникальных​ на VBA функцию​ к ячейкам будет​ Range) As Long​ даже и ручным​ возвращает число уникальных​Потом вычисляются дроби​ без учета пустых​ нулевые значения. Первое​Все это сводится к​ Ctrl+Shift+Enter​: так?​ великолепные — и​ arrFlag() As Boolean​ привели.​End Sub​Next​ из 11000 макросами:​ листа =СУММПРОИЗВ(1/СЧЁТЕСЛИ(Диапазон;Диапазон))​ незначительным…​’=СУММПРОИЗВ(1/СЧЁТЕСЛИ(Диапазон;Диапазон))​ пересчётом).​ значений в указанном​1/Число вхождений​ ячеек и текстовых​ вхождение конкретное значение​ {1/3;1/1;1/1;1/1;1/3;1/3}.​В формуле массив​Помогите написать формулу, которая​ Сергея, и​ Dim I&, J&​Олег55​Sub filter()​Cells(3, 5) =​Degassad 4.171125​СЧЁТ_РАЗНЫХ_3 — 38,22​

​слэн​​СЧЁТ_РАЗНЫХ_2 = Evaluate(«SumProduct(1/CountIf(«​А вот усовершенствованная​:)​ диапазоне​

​для каждого элемента​​ значений (6)​ она возвращает число​Этот массив констант используется​ единиц длиной в​ высчитывала бы по​

​Очень помогли!​​ Dim rngCond() On​
​: Доброе утро, уважаемые​Start! = Timer​​ Timer — Start​​For Each 1.625004​ сек.​: гораздо быстрее​ & Диапазон.Address &​

​ вами формула даже​​’ Notes :​ и все они​
​Примечания:​ равно количество вхождений​ в качестве аргумента​ количество строк, и​

​ двум столбцам кол-во​​Jack Famous​ Error Resume Next​ знатоки Excel!​Range(«A1:A12000»).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Worksheets(1).Range(«B1»),​
​Cells(3, 6) =​

​For i 2.422002​​Да… Гуру форума,​
​Казанский​ «,» & Диапазон.Address​ в исходном примере​’—————————————————————————————​ суммируются, что и​ ​

​ значения. Для каждого​​ для функции​ если строк много,​ уникальных записей. Пример​: Олег55, доброго дня!​

​ cl = rngU.Value​​Пожалуйста, помогите в​ Unique:=True​ Col.Count​Dictionary 1.530991​​ конечно, обычно правы,​​: Алексей, а протестируй​ & «))»)​ топик-стартера (т.е. без​

​Dim iCell As​​ даст нам количество​

​В формулах в этом​​ случая того же​
​SUM​ например 99, то​
​ на рисунке. Спасибо​

​Предлагаю вариант на​​ With CreateObject(«Scripting.Dictionary») For​ ячейке вычислить количество​[CalcTime] = Timer​[CalcTime] = Timer​AdvFilter 0.280985355​ но чтобы разница​ разные методы и​End Function​ пустых ячеек в​ Range​

planetaexcel.ru

Подсчет уникальных значений (Формулы/Formulas)

​ уникальных элементов:​​ примере должны быть​ значения после первого​(СУММ), давая результат​

​ единицы устанешь писать.​​Supreme council​ связях таблиц между​ I = 1​

​ точек сети Магнит,​​ — Start​

​ — Start​​Сами коды:​ во времени выполнения​ отпишись?​слэн​​ диапазоне) даёт 47,​

​Set Диапазон =​​Если в диапазоне встречаются​ введены как формулы​ эта функция возвращает​ 4.​

​ Выход массив единиц​​: 1. Вычисление количества​

excelworld.ru

Excel: Как посчитать количество уникальных записей?

​ собой. Использованы только​ To UBound(cl) ReDim​ по которым хотя​Cells(6, 5) =​End Sub​

​Sub btnDeggasad_Click()​​ достигала более 400​Для тестов создай​
​: а не надо​
​ когда реально и​ Intersect(Диапазон.Parent.UsedRange, Диапазон)​
​ пустые ячейки, то​ массива. Выделите все​ значение 0.​Урок подготовлен для Вас​ делать формулой​
​ уникальных числовых значений​
​ штатные функции Excel.​ arrFlag(Int(UBound(Conditions) / 2))​
​ бы в одной​ Timer — Start​Sub btnCollections2_Click()​
​Dim aOld, aNew,​
​ раз…!!! Не ожидал.​ массив из миллиона​ этой «элегантности» :)​ моим макросом и​
​On Error Resume​ придется немного усовершенствовать​ ячейки, содержащие формулы,​Функция ПОИСКПОЗ используется для​ командой сайта office-guru.ru​=СУММ (1/МУМНОЖ (—(A1:A5&B1:B5=ТРАНСП​=SUM(IF(FREQUENCY(A2:A10;A2:A10)>0;1))​ Результат на листе​ For J =​ товарной накладной начислен​End Sub​Dim NewMyArray(), MyArray​ i As Long,​Так что, формулисты,​

​ случайных чисел в​​в vba эффективнее​ вашей же исходной​
​ Next​ формулу, добавив проверку​ нажмите клавишу F2​ возврата позиции текстового​Источник: http://www.excel-easy.com/examples/count-unique-values.html​
​ (A1:A5&B1:B5));СТРОКА (A1:ИНДЕКС (A:A;СЧЁТЗ​=СУММ (ЕСЛИ (ЧАСТОТА​ «shop» 3ий столбец​
​ LBound(Conditions) To UBound(Conditions)​ бонус (т.е. бонус​Файл не даю,​Dim Col As​ str As String​ бросайте своё тормозное​ диапазоне 1…200 000.​ будет простым перебором,​

​ формулой там 48​​With New Collection​ на пустые ячейки​
​ и нажмите клавиши​ значения в диапазоне.​
​Перевела: Ольга Гелих​ (A:A)))^0))​ (A2:A10;A2:A10)>0;1))​alex1210​ Step 2 If​ >0).​ сильно секретный :)​ New Collection​
​Start! = Timer​ занятие и пишите​Guest​

​ только к вашему​

Наборы данных в Excel часто содержат одно и то же значение несколько раз в столбце. Иногда может быть полезно узнать, сколько уникальных значений находится в столбце. Например, если вы управляете магазином и имеете электронную таблицу всех ваших транзакций, вы можете захотеть определить, сколько у вас уникальных клиентов, а не подсчитывать каждую транзакцию.

Это можно сделать, подсчитав уникальные значения в Excel, используя методы, о которых мы поговорим ниже.

Удалить повторяющиеся данные из столбца

Быстрый и грязный способ подсчета уникальных значений в Excel – удалить дубликаты и посмотреть, сколько записей осталось. Это хороший вариант, если вам нужен быстрый ответ и не нужно отслеживать результат.

Скопируйте данные на новый лист (чтобы случайно не удалить нужные данные). Выберите значения или столбец, из которого вы хотите удалить повторяющиеся значения. В разделе Data Tools на вкладке Data выберите Remove Duplicates . Это удаляет все повторяющиеся данные и оставляет только уникальные значения.

Тот же процесс работает, если информация разделена между двумя столбцами. Разница в том, что вам нужно выбрать оба столбца. В нашем примере у нас есть столбец для имени и второй для фамилии.

Если вы хотите отслеживать количество уникальных значений, лучше вместо этого написать формулу. Ниже мы покажем вам, как это сделать.

Чтобы подсчитывать только уникальные значения, нам нужно объединить несколько функций Excel. Сначала нам нужно проверить, не является ли каждое значение дубликатом, а затем подсчитать оставшиеся записи. Нам также нужно использовать функцию массива.

Если вы просто ищете ответ, используйте эту формулу, заменяя каждый экземпляр A2: A13 ячейками, которые вы хотите использовать:

 {=SUM(IF(FREQUENCY(MATCH(A2:A13, A2:A13, 0), MATCH(A2:A13, A2:A13, 0)) >0, 1))}

Как мы туда попали, немного сложнее. Поэтому, если вы хотите понять, почему эта формула работает, ниже мы разберем ее по частям.

Объяснение функции массива

Давайте сначала начнем с объяснения того, что такое массив. Массив – это одна переменная, которая содержит несколько значений. Это похоже на одновременное обращение к кучке ячеек Excel вместо обращения к каждой ячейке по отдельности.

С нашей точки зрения, это странное различие. Если мы скажем формуле, чтобы она смотрела на ячейки A2: A13 в обычном режиме или в виде массива, данные для нас выглядят одинаково. Разница в том, как Excel обрабатывает данные за кулисами. Это настолько тонкая разница, что новейшие версии Excel больше не делают различий между ними, хотя старые версии это делают.

Для наших целей более важно знать, как мы можем использовать массивы. Если у вас установлена ​​последняя версия Excel, она автоматически сохраняет данные в виде массива, когда это более эффективно. Если у вас более старая версия, когда вы закончите писать формулу, нажмите Ctrl + Shift + Enter . Как только вы это сделаете, формула будет окружена фигурными скобками, чтобы показать, что она находится в режиме массива.

Знакомство с функцией FREQUENCY

Функция ЧАСТОТА сообщает нам, сколько раз число появляется в списке. Это замечательно, если вы работаете с числами, но наш список – текст. Чтобы использовать эту функцию, мы должны сначала найти способ преобразовать наш текст в числа.

Если вы пытаетесь подсчитать уникальные значения в списке чисел, вы можете пропустить следующий шаг.

Использование функции ПОИСКПОЗ

Функция ПОИСКПОЗ возвращает позицию первого вхождения значения. Мы можем использовать это для преобразования нашего списка имен в числовые значения. Ему необходимо знать три части информации:

  • Какую ценность вы ищете?
  • Какой набор данных вы проверяете?
  • Вы ищете значения выше, ниже или равные целевому значению?

В нашем примере мы хотим найти каждое имя наших клиентов в нашей электронной таблице Exel, чтобы увидеть, появляется ли их точное имя снова в другом месте.

В приведенном выше примере мы ищем в нашем списке (A2: A13) Тиа Галлахер (A2) и хотим получить точное совпадение. 0 в последнем поле указывает, что это должно быть точное совпадение. Наш результат говорит нам, где в списке имя появилось первым. В данном случае это было первое имя, поэтому результат равен 1.

Проблема в том, что мы заинтересованы во всех наших клиентах, а не только в Тиа. Но если мы попытаемся найти A2: A13 вместо A2, мы получим ошибку. Вот здесь и пригодятся функции массива. Первый параметр может принимать только одну переменную, иначе он вернет ошибку. Но с массивами обращаются как с единственной переменной.

Теперь наша функция сообщает Excel, что нужно проверять совпадения для всего массива. Но подождите, наш результат не изменился! Он по-прежнему говорит 1. Что здесь происходит?

Наша функция возвращает массив. Он просматривает каждый элемент в нашем массиве и проверяет совпадения. Результаты всех имен сохраняются в массиве, который возвращается как результат. Поскольку ячейка показывает только одну переменную за раз, она показывает первое значение в массиве.

Вы можете убедиться в этом сами. Если вы измените первый диапазон на A3: A13, результат изменится на 2. Это потому, что имя Eiliyah стоит на втором месте в списке, и теперь это значение сохраняется первым в массиве. Если вы измените первый диапазон на A7: A13, вы снова получите 1, потому что имя Тиа впервые появляется в первой позиции проверяемого набора данных.

Использование функции ЧАСТОТА

Теперь, когда мы изменили имена на числовые значения, мы можем использовать функцию ЧАСТОТА. Подобно MATCH, он требует поиска цели и набора данных для проверки. Также, как и в случае с MATCH, мы не хотим искать только одно значение, мы хотим, чтобы функция проверяла каждый элемент в нашем списке.

Целью, которую мы хотим, чтобы функция FREQUENCY проверяла, является каждый элемент в массиве, возвращаемый нашей функцией MATCH. И мы хотим проверить набор данных, возвращаемый функцией MATCH. Таким образом, мы отправляем созданную нами выше функцию MATCH для обоих параметров.

Если вы ищете уникальные числа и пропустили предыдущий шаг, вы должны отправить диапазон чисел в качестве обоих параметров. Для поиска по всем числам в вашем списке вам также потребуется использовать функцию массива, поэтому не забудьте нажать Ctrl + Shift + Enter после ввода формулы, если вы используете старую версию Excel.

Теперь наш результат – 2. И снова наша функция возвращает массив. Он возвращает массив, в котором указано количество появлений каждого уникального значения. В ячейке отображается первое значение в массиве. В этом случае имя Тиа появляется дважды, поэтому возвращается частота 2.

Использование функции ЕСЛИ

Теперь в нашем массиве столько же значений, сколько у нас уникальных значений. Но мы еще не закончили. Нам нужен способ сложить это. Если мы преобразуем все значения в массиве в 1 и просуммируем их, то мы наконец узнаем, сколько уникальных значений у нас есть.

Мы можем создать функцию ЕСЛИ, которая изменяет все значения выше нуля на 1. Тогда все значения будут равны 1.

Для этого мы хотим, чтобы наша функция IF проверяла, больше ли значения в нашем массиве FREQUENCY нуля. Если true, он должен вернуть значение 1. Вы заметите, что теперь первое значение в массиве возвращается как единое целое.

Использование функции СУММ

Мы на последней стадии! Последний шаг – СУММИРОВАТЬ массив.

Оберните предыдущую функцию в функцию СУММ. Законченный! Итак, наша окончательная формула:

 {=SUM(IF(FREQUENCY(MATCH(A2:A13, A2:A13, 0), MATCH(A2:A13, A2:A13, 0)) >0, 1))}

Подсчет уникальных записей в Excel

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

Если вам не нужно так часто подсчитывать уникальные записи, быстрый и грязный совет по удалению повторяющихся значений сработает в крайнем случае!

Понравилась статья? Поделить с друзьями:
  • Как посмотреть удаленные файлы word
  • Как посмотреть у кого открыт файл excel
  • Как посмотреть только комментарии в word
  • Как посмотреть текст документа word перед печатью
  • Как посмотреть сумму ячеек в excel