Хитрости »
Основные понятия (22)Здесь собраны статьи, в которых разъясняются базовые понятия работы в Excel и VBA, а так же проблемы, с которыми сталкивается большинство начинающих
Сводные таблицы и анализ данных (5) Раздел поможет изучить сводные таблицы и научиться их использовать "на полную"
Графики и диаграммы (4) Раздел поможет научиться создавать диаграммы и графики в Excel, в том числе нестандартные
Работа с VB проектом (10) С помощью статей раздела вы научитесь создавать процедуры программно и выполнять различные операции с объектами самого VBA
Power BI и Power Query (5) Здесь собраны статьи, раскрывающие различные возможности мощнейшего инструмента для визуализаций бизнесс-процессов Power BI и надстройки для Excel Power Query
Условное форматирование (5) Этот раздел поможет поближе познакомиться с Условным форматированием на примерах различных ситуаций
Списки и диапазоны (5) Статьи, посвященные работе не только с выпадающими списками, но и с диапазонами и хитростями их применения в рабочих файлах
Макросы(VBA процедуры) (59) Статьи раздела направлены на изучение VBA с детальным разбором кодов. Множество статей с примерами кодов под всевозможные ситуации с комментариями и пояснениями
Разное (34) Собраны статьи, которые не подходят ни под одну из представленных выше категорий или входят сразу в несколько. Но эти статье не менее полезные!

Как подсчитать количество повторений

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

И необходимо подсчитать количество повторений каждого наименования:

Как ни странно, но сделать это весьма просто: в Excel имеется функция - СЧЁТЕСЛИ, при помощи которой все это сделать можно буквально за секунды. Если количество повторений каждого наименования необходимо вывести в столбец В таблицы, а сами наименования расположены в столбце А:
=СЧЁТЕСЛИ($A$2:$A$30;A2)
Диапазон ($A$2:$A$30) - указываются ячейки диапазона, в которых записаны значения, количество которых необходимо подсчитать. Главная особенность: данный аргумент может быть исключительно ссылкой на ячейку или диапазон ячеек. Недопустимо указывать произвольный массив значений.
Критерий (A2) - указывается ссылка на ячейку или непосредственно значение для подсчета. Т.е. можно указать и так: =СЧЁТЕСЛИ($A$2:$A$30;"Яблоко"). Помимо этого можно применять символы подстановки: ? и *. Т.е. указав в качестве Критерия "*банан*" можно подсчитать количество ячеек, в которых встречается слово "банан"(банановый, банан, бананы, банановый сок, сто бананов, три банана и орех и т.п.). А указав "банан*" — значения, начинающиеся на "банан"(бананы, банановый сок, банановая роща и т.п.). "?" — заменяет лишь один символ, т.е. указав "бан?н" можно подсчитать строки и со значением "банан" и со значением "банон" и т.д. Если в качестве критерия указать =СЧЁТЕСЛИ($A$2:$A$30;"*"), то будут подсчитаны все текстовые значения. Числовые значения при этом игнорируются. Данные подстановочные символы (* и ?) не получится применить к числовым значениям - исключительно к тексту. Т.е. если если указать в качестве критерия "12*", то числа 1234, 123, 120 и т.п. не будут подсчитаны. Для подсчета числовых значений следует применять операторы сравнения: =СЧЁТЕСЛИ($A$2:$A$30;">12")

Подсчитать числа, которые больше нуля:=СЧЁТЕСЛИ($A$2:$A$30;">0")
Подсчитать количество непустых ячеек: =СЧЁТЕСЛИ($A$2:$A$30;"<>")

Как видно из второго рисунка - там наименования не повторяются, хотя в таблице они все записаны вперемешку. Я не буду заострять на этом внимание - я уже описывал это в статье Как получить список уникальных(не повторяющихся) значений? и при необходимости можно воспользоваться любым описанным в ней методом.


Если необходимо подсчитать количество повторений на основании нескольких условий(значений), то начиная с 2007 Excel это легко можно сделать при помощи функции СЧЁТЕСЛИМН(COUNTIFS). Синтаксис функции почти такой же, как у СЧЁТЕСЛИ(COUNTIF), только условий и диапазонов больше:
=СЧЁТЕСЛИМН($A$2:$A$30;A2;$B$2:$B$30;B2)
предполагается, что условия записаны в столбце В

По сути идет просто перечисление:
=СЧЁТЕСЛИМН(Диапазон_условий1;Условие1; Диапазон_условий2;Условие2; Диапазон_условий3;Условие3; и т.д.)


Но. Бывают случаи, когда список расположен вовсе не в таблице, а в одной ячейке($D$1):
Дыня Киви Груша Яблоко Дыня Груша Груша Арбуз Яблоко Банан Яблоко Яблоко Банан Яблоко Яблоко Дыня Дыня Киви Банан Дыня Арбуз Дыня Киви Яблоко Дыня Груша Яблоко Киви Арбуз
Здесь СЧЁТЕСЛИ точно не поможет. Но в Excel полно других функций и все можно сделать так же достаточно просто:
=(ДЛСТР($D$1)-ДЛСТР(ПОДСТАВИТЬ($D$1;D3;"")))/ДЛСТР(D3)
ДЛСТР- подсчитывает количество символов в указанной ячейке/строке($D$1, D3)
ПОДСТАВИТЬ (текст; старый_текст; новый_текст) - заменяет в указанном тексте заданный символ на любое другое заданное значение. По умолчанию заменяет все повторы указанного символа. Именно это и положено в основу алгоритма. На примере значения Банан(D3) пошаговый разбор формулы:

  • при помощи функции ДЛСТР получаем количество символов в строке с исходным текстом($D$1) =(170-ДЛСТР(ПОДСТАВИТЬ($D$1;D3;"")))/ДЛСТР(D3);
  • при помощи функции ПОДСТАВИТЬ заменяем в строке с исходным текстом($D$1) все значения Банан(D3) на пусто и при помощи ДЛСТР получаем количество символом строки после этой замены =(170-155)/ДЛСТР(D3);
  • вычитаем из общего количества символов количество символов в строке после замены и умножаем результат на количество символов в критерии =(170-155)/5.

Получаем число 3. Что нам и требовалось.


И до кучи функция пользователя:

Синтаксис функции:
=GetRepeat($D$1;D3)
sTxt - текст, в котором подсчитываем кол-во вхождения.
sCntWord - текст для подсчета. Может быть символом или словом.

Скачать пример

  Tips_All_Count_Duplicate.xls (39,0 KiB, 3 285 скачиваний)

Так же см.:
Что такое формула?
Функция СУММЕСЛИ, а так же СУММЕСЛИ по двум критериям


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

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

Access Multex Outlook Power BI Power Query и Power BI VBA работа в редакторе VBA управление кодами Бесплатные надстройки Дата и время Диаграммы и графики Записки Защита Защита данных Интернет Картинки и объекты Листы и книги Макросы и VBA Настройка Поиск данных Почта Программы Работа с приложениями Работа с файлами Разработка приложений Сводные таблицы Списки Тренинги и вебинары Финансовые Форматирование Формулы и функции Функции Excel Функции VBA Ячейки и диапазоны акции MulTEx вебинар ссылки статьи тренинг
Обсуждение: оставлено 29 коммент.
  1. Батыр:

    Здравствуйте.
    Как посчитать количество чисел, при этом одинаковые числа считать как одну единицу
    Спасибо

  2. Александр:

    @Батыр
    удалите дубликаты и потом посчитайте кол-во

  3. Павел:

    Добрый день. А как подсчитать количество повторяющихся ячеек, но только тех, которые идут подряд? Например количество дней на больничном.

  4. Тарас:

    Спасибо!

  5. Игорь:

    Дмитрий, не в обиду, почему функции и аргументы всегда так пространно у вас кодируются? Пользователь не поймет, что к чему. Можно ведь вместо:
    Function GetRepeat(sTxt As String, sCntWord As String)
    GetRepeat = (Len(sTxt) - Len(Replace(sTxt, sCntWord, ""))) / Len(sCntWord)
    End Function

    Сделать, что-то вида:

    Function ЧПОВТОР(Диапазон As String, Критерий As String)
    ЧПОВТОР = (Len(Диапазон) - Len(Replace(Диапазон, Критерий, ""))) / Len(Критерий)
    End Function

    Так ведь в итоге будет понятнее.

    • Игорь, да никаких обид. Просто если у пользователя офис не в русской локализации и русский язык не распознается редактором VBA, то вместо ЧПОВТОР будет что-то вроде ???????.
      К тому же я вроде описываю как использовать и что каждый аргумент означает. Не должно уж сильных-то затруднений вызывать. И если уж кто захочет функцию использовать постоянно - думаю переименует под свои видения :)

  6. Алексей:

    в тексте слово "умножаем" надо заменить на "делим". скопированный текст ниже:

    ◾вычитаем из общего количества символов количество символов в строке после замены и умножаем результат на количество символов в критерии =(170-155)/5.

  7. Андрей:

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

  8. Денис:

    помогли спасибо !!!

Поделитесь своим мнением

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


Для оформления сообщений Вы можете использовать следующие тэги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Логин
Наши партнеры
Перейти
Перейти
Счетчики
Анализ сайта

Яндекс.Метрика
© 2016 Excel для всех  Войти