Excel количество ячеек с условным форматированием

 

MEP

Пользователь

Сообщений: 253
Регистрация: 29.04.2013

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

 

Алексей К

Пользователь

Сообщений: 325
Регистрация: 29.12.2012

 

MEP

Пользователь

Сообщений: 253
Регистрация: 29.04.2013

да, первым делом туда полез . но там суммирование ЗНАЧЕНИЙ в ячейках по цвету. а мне надо просто посчитать  количество закрашенных (можно даже без привязки к цвету) ячеек. в этом разница. находил и для подсчета цветных ячеек функции, но насколько понял они с условным форматированием не дружат

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

#4

26.07.2013 20:15:35

Цитата
MEP пишет:
первым делом туда полез . но там суммирование ЗНАЧЕНИЙ в ячейках по цвету. а мне надо просто посчитатьколичество закрашенных

Там и количество, насколько я помню, можно считать. Вы ПРОБОВАЛИ эту надстройку, прежде чем утверждать такое?

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

#5

26.07.2013 20:17:37

Дмитрий (автор надстройки) пишет:

Цитата
Надстройка позволяет суммировать данные ячеек и подсчитывать ячейки по условию цвета заливки

Разве здесь только о суммах разговор?

 

Z

Пользователь

Сообщений: 6111
Регистрация: 21.12.2012

Win 10, MSO 2013 SP1

У вас все есть — в BX-BZ!
А вот как график строить — в «Приемы» пожалуйте! Вам «отпускной» Гант в самый раз, наверное, будет…  ;)
См. —

http://www.planetaexcel.ru/techniques/4/74/

Изменено: Z26.07.2013 20:20:04

«Ctrl+S» — достойное завершение ваших гениальных мыслей!.. ;)

 

Алексей К

Пользователь

Сообщений: 325
Регистрация: 29.12.2012

Юрий М, возможно автор прав. В полной версии надстройки Дмитрия точно есть функция подсчета количества, а в ограниченной ее может и не быть. В общем, надо посмотреть.

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

Ну для этого нужно хотя бы ПОПРОБОВАТЬ)

 

MEP

Пользователь

Сообщений: 253
Регистрация: 29.04.2013

по вашей настоятельной просьбе еще раз попробовал Summ_CellColor и нифига, выдает ЗНАЧ. еще прочитал маленькую приписку что функция может работать некорректно если условное форматирование задано через формулу. у меня так и есть. может у меня такой случай

 

Алексей К

Пользователь

Сообщений: 325
Регистрация: 29.12.2012

Считает функция CountByCellColor.

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

Вот

здесь

подробнее про счёт.

 

MEP

Пользователь

Сообщений: 253
Регистрация: 29.04.2013

#12

26.07.2013 20:39:39

Цитата
Z пишет:… в «Приемы» пожалуйте! Вам «отпускной» Гант в самый раз, наверное, будет…
См. — http://www.planetaexcel.ru/techniques/4/74/

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

 

MEP

Пользователь

Сообщений: 253
Регистрация: 29.04.2013

Юрий М, по ссылке все равно ЗНАЧ выдает. задаю критерий — мой столбец закрашеный. Color Cell — это ячейка с цветом. критерии не задаю дальше.

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

#14

26.07.2013 20:45:08

Цитата
MEP пишет:
задаю критерий — мой столбец закрашеный

Насколько я понимаю, в качестве критерия должна выступать ЯЧЕЙКА, а не столбец.

 

The_Prist

Пользователь

Сообщений: 14181
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#15

26.07.2013 20:51:34

Цитата
MEP пишет:
по вашей настоятельной просьбе еще раз попробовал Summ_CellColor и нифига, выдает ЗНАЧ.

И это логично. Внутри надстройки есть и Count_CellColor(Диапазон суммирования, Ячейка-образец цвета, Критерий, Номер столбца критерия)
Но в Вашем случае надстройка скорее всего не сработает(т.к. у Вас применены функции на русском). А в данной надстройке перевод на англ. не реализован.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Z

Пользователь

Сообщений: 6111
Регистрация: 21.12.2012

Win 10, MSO 2013 SP1

Простите, но «по-малярному» подходить к делу — это заблуждение.
Ставьте «колы» за сутки, да считайте себе… Сколько человек в этот день в отпуске, отвечает ли их количество установленной норме, сколько дней у скольких сотрудников идут с наложением, из одного или разных они отделов… А раскраска — это для облегчения зрительного восприятия.  ;)
ps C рождения форума на нем каких только отпускных и прочих схем не было, стоит поискать.

Изменено: Z26.07.2013 21:00:08

«Ctrl+S» — достойное завершение ваших гениальных мыслей!.. ;)

 

MEP

Пользователь

Сообщений: 253
Регистрация: 29.04.2013

ну это я для примера человек засунул) а если их 107 будет? думал тут помогут. а на форуме моего случая нет. если бы был то Гуру макросонаписания давно бы уже скинули мой пример с решением.. показали бы как надо. а тут только 2 листа переписки. ничего личного. разбирая эту тему итак многое узнал, будем двигаться дальше. если решу. выложу

 

The_Prist

Пользователь

Сообщений: 14181
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#18

26.07.2013 21:18:08

Цитата
MEP пишет:
если бы был то Гуру макросонаписания давно бы уже скинули мой пример с решением.. показали бы как надо. а тут только 2 листа переписки.

Скрытый текст

Я эту тему прошерстил уже и скажу Вам так: это очень наблагодарное занятие — работать с УФ через VBA. Там кода на добрых 300 с лишним строк(это я потраченное время на выдумывание алгоритмов не беру еще). И это не все. Сколько было тестирований и прочего…На данный момент у меня лично все это в DLL, не на VBA. Иначе невозможно с такими функциями работать — они по 2-3 минуты каждая могут считаться.

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

Замена Условного форматирования обычным

А затем уже цвет считать любым удобным способом.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

MEP

Пользователь

Сообщений: 253
Регистрация: 29.04.2013

ВО! в душе я догадывался что эта задача сложнореализуема и все советы типа попробуй то и это это для новичка пустая трата времени. Поэтому и пытал так усердно вас тут. Спасибо, теперь у меня в этой задаче вопросов нет. буду единичками баловаться) как мне тут посоветовали
ну и попробую ваш последний совет еще.

 

Nic70y

Пользователь

Сообщений: 3289
Регистрация: 22.12.2012

Win7 MSO 2013

#20

26.07.2013 21:27:54

MEP, а что у Вас в столбцах E, F делают 2?
Чем формулы не подходят?
Например массивные:

Код
=СЧЁТ(ЕСЛИ(D$4>=$BX$5:$BX$21;ЕСЛИ(D$4<=$BY$5:$BY$21;$BY$5:$BY$21)))
 

MEP

Пользователь

Сообщений: 253
Регистрация: 29.04.2013

интересный вариант, но в моем примере он не заработал(

 

Nic70y

Пользователь

Сообщений: 3289
Регистрация: 22.12.2012

Win7 MSO 2013

Странно…

Прикрепленные файлы

  • 845,99.xls (80.5 КБ)

 

MEP

Пользователь

Сообщений: 253
Регистрация: 29.04.2013

#23

26.07.2013 21:40:37

совсем забыл что массив запускается через ctrl shitft enter ;) спасибо. это решение подойдет

Добрый день.
Помогите решить задачку ::)

Необходимо посчитать количество ячеек с условным форматированием.

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

Во вложении пример, думаю наглядно посмотреть будет понятнее.

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

Заранее большущее спасибо! ;)

Иногда движение вперед является результатом пинка сзади…


В Эксе не старше 2010:

Public Sub www()
    Dim c As Range
    [e2:e5].ClearContents
    For Each c In [e11:e25].Cells
        Select Case c.DisplayFormat.Interior.Color
        Case 52224
            [e4] = [e4] + 1
        Case 16777215
            [e2] = [e2] + 1
        Case 255
            [e5] = [e5] + 1
        Case 6750207
            [e3] = [e3] + 1
        End Select
    Next
End Sub

Я, как всегда, чертовски адекватен… Email: kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728, E332314026771


=СУММПРОИЗВ(--(F11:F25=D11:D25))
Для других аналогично.


Иногда движение вперед является результатом пинка сзади…


kuklp1, спасибо, за ответ, правда не совсем поняла что нужно писать в ячейках — какую формулу?

Иногда движение вперед является результатом пинка сзади…


Забудьте. Вариант Виктора лучше.

Я, как всегда, чертовски адекватен… Email: kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728, E332314026771


Цитироватьгде почитать про суммпроизв и ее возможности

С функцией знакомился на форумах и немного читал справку.


Ранее я описал, как с помощью пользовательской функции найти сумму значений в ячейках, выделенных цветом. К сожалению, эта функция не работает, если ячейки раскрашены с помощью условного форматирования. Я обещал «доработать» функцию. Но за два года, прошедшие с публикации той заметки, я не смог ни самостоятельно, ни с помощью информации из Интернета написать удобоваримый код… (Дополнение от 29 марта 2017 г. Спустя еще пять лет, код мне всё же удалось написать; см. заключительную часть заметки). И вот недавно я наткнулся на идею, содержащуюся в книге Д.Холи, Р. Холи «Excel 2007. Трюки», которая позволяет обойтись вовсе без кода.

Пусть есть список чисел от 1 до 100, размещенных в диапазоне А1:А100 (рис. 1; см. также лист «СУММЕСЛИ» Excel-файла) [1]. На диапазон наложено условное форматирование, помечающее ячейки, содержащие числа больше 10 и меньше или равно 20.

Рис. 1. Диапазон чисел; условным форматированием выделены ячейки, содержащие значения от 10 до 20

Скачать заметку в формате Word, примеры в формате Excel

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

Чтобы сложить диапазон ячеек, отвечающих одному критерию, можно использовать функцию СУММЕСЛИ (рис. 2).

Рис. 2. Суммирование ячеек, отвечающих одному условию

Если у вас несколько условий, можно использовать функцию СУММЕСЛИМН (рис. 3).

Рис. 3. Суммирование ячеек, отвечающих нескольким условиям

Для подсчета числа ячеек, отвечающих одному критерию, можно использовать функцию СЧЁТЕСЛИ.

Для подсчета числа ячеек, отвечающих нескольким критериям, можно использовать функцию СЧЁТЕСЛИМН.

В Excel предусмотрена еще одна функция, которая позволяет указать несколько условий. Эта функция входит в набор функций баз данных Excel и называется БДСУММ. Чтобы проверить ее, используйте тот же набор чисел в диапазоне А2:А100 (рис. 4; см. также лист «БДСУММ» Excel-файла).

Рис. 4. Использование функций баз данных

Выделите ячейки C1:D2 и присвойте этому диапазону имя Критерий, введя его в поле имени слева от строки формул. Теперь выделите ячейку С1 и введите =$А$1, то есть ссылку на первую ячейку на листе, содержащую имя базы данных. Введите =$А$1 в ячейку D1 и вы получите две копии заголовка столбца А. Эти копии будут использоваться как заголовки для условий БДСУММ (C1:D2), который вы назвали Критерий. В ячейке С2 введите >10. В ячейке D2 введите <=20. В ячейке, где должен быть результат, введите следующую формулу:

=БДСУММ($А$1:$А$101,1,Критерий)

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

Дополнение от 29 марта 2017 г.

Читая книгу Джона Уокенбаха Excel 2010. Профессиональное программирование на VBA я узнал, что, начиная с версии Excel 2010 в VBA появилось новое свойство DisplayFormat (см., например, Range.DisplayFormat Property). Т.е., VBA может считывать формат, отображаемый на экране. При этом не важно, как он был получен, прямыми настройками пользователя, или с помощью условного форматирования. К сожалению, разработчики MS сделали так, что свойство DisplayFormat работает только в процедурах, вызываемых из VBA, а пользовательские функции на основе этого свойства выдают ошибку #ЗНАЧ! Тем не менее, получить сумму значений в диапазоне по ячейкам определенного цвета, можно с помощью процедуры (макроса, но не функции). Откройте Excel-файл с примером (содержит код VBA). Пройдите по меню Вид -> Макросы -> Макросы; в окне Макрос, выделите строку СумЦветУсл, и нажмите Выполнить. Запустится макрос, выберите диапазон суммирования и критерий. Ответ появится в окне.

Код процедуры

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

Sub СумЦветУсл()

    Application.Volatile True

    Dim SumColor As Double

    Dim i As Range

    Dim UserRange As Range

    Dim CriterionRange As Range

    SumColor = 0

‘   Запрос диапазона

    Set UserRange = Application.InputBox( _

        Prompt:=»Выберите диапазон суммирования», _

        Title:=»Выбор диапазона», _

        Default:=ActiveCell.Address, _

        Type:=8)

   Запрос критерия

    Set CriterionRange = Application.InputBox( _

        Prompt:=«Выберите критерий суммирования», _

        Title:=«Выбор критерия», _

        Default:=ActiveCell.Address, _

        Type:=8)

   Суммирование «правильных» ячеек

    For Each i In UserRange

        If i.DisplayFormat.Interior.Color = _

               CriterionRange.DisplayFormat.Interior.Color Then

           SumColor = SumColor + i

        End If

    Next

    MsgBox SumColor

End Sub

Хотя пользовательская функция и дает ошибку, но в процессе ее вызова можно «подсмотреть» ответ. В ячейке начните набирать формулу =su…

Воспользуйтесь подсказкой, кликнув на нее, а затем нажмите знак функции в строке формул:

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


[1] Массив я создал с помощью функции =СЛУЧМЕЖДУ(1;100)

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

Подсчет ячеек по цвету шрифта и фону с помощью VBA

Подсчет/сумма ячеек по цвету шрифта с условным форматированием по Kutools for Excel хорошая идея3      играть

Подсчет/сумма ячеек по цвету фона с условным форматированием по Kutools for Excel хорошая идея3      играть


стрелка синий правый пузырь Подсчет ячеек по шрифту и цвету фона с помощью VBA

В Excel только код VBA может быстро подсчитывать ячейки на основе определенного шрифта и цвета фона.

1. Нажмите Alt + F11 ключи для открытия Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модули и скопируйте и вставьте ниже кода VBA во всплывающий Модули окно.

VBA: подсчет ячеек на основе шрифта и цвета фона.

Sub DisplayFormatCount()
	'Updateby20150305
	Dim Rng As Range
	Dim CountRange As Range
	Dim ColorRange As Range
	Dim xBackColor As Long
	Dim xFontColor As Long
	On Error Resume Next
	xTitleId       = "KutoolsforExcel"
	Set CountRange = Application.Selection
	Set CountRange = Application.InputBox("Count Range :", xTitleId, CountRange.Address, Type: = 8)
	Set ColorRange = Application.InputBox("Color Range(single cell):", xTitleId, Type: = 8)
	Set ColorRange = ColorRange.Range("A1")
	xReturn        = 0
	For Each Rng In CountRange
		qqq           = Rng.Value
		xxx           = Rng.DisplayFormat.Interior.Color
		If Rng.DisplayFormat.Interior.Color = ColorRange.DisplayFormat.Interior.Color Then
			xBackColor   = xBackColor + 1
		End If
		If Rng.DisplayFormat.Font.Color = ColorRange.DisplayFormat.Font.Color Then
			xFontColor = xFontColor + 1
		End If
	Next
	MsgBox "BackColor is " & xBackColor & Chr(10) & "FontColor is " & xFontColor
End Sub

3. Нажмите Run или нажмите F5 нажмите клавишу, чтобы запустить код, затем выберите нужный диапазон в диалоговом окне. Смотрите скриншот:
количество документов по условному цвету-1

4. Нажмите OK, затем выберите ячейку, шрифт и цвет фона которой вы хотите подсчитать. Смотрите скриншот:

количество документов по условному цвету-2

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

количество документов по условному цвету-3


стрелка синий правый пузырь Подсчет/сумма ячеек по цвету шрифта с условным форматированием по Kutools for Excel

В Excel нельзя подсчитывать или суммировать ячейки по цвету шрифта только с условным форматированием. Однако есть удобная надстройка под названием Kutools for Excel которые могут помочь вам быстро решить эту проблему с помощью Считать по цвету функцию.

После бесплатная установка Kutools for Excel, пожалуйста, сделайте следующее:

1. Выберите диапазон, в котором вы хотите подсчитать или суммировать ячейки по цвету шрифта с условным форматированием, затем щелкните Кутулс Плюс> Считать по цвету. Смотрите скриншот:

количество документов по условному цвету-4

2. Затем в Считать по цвету диалоговое окно, выберите Условное форматирование под Цветовой метод список и шрифт под Тип цвета список. Затем вы можете просмотреть результат подсчета и подведения итогов в диалоговом окне. Смотрите скриншот:

количество документов по условному цвету-5

Внимание: Если вы хотите вывести результат расчета в виде отчета, вы можете нажать Создать отчет iп Считать по цвету диалог, то отчет будет построен в новой книге. Смотрите скриншот:

количество документов по условному цвету-6      количество документов по условному цвету-7


Подсчет/сумма ячеек по цвету фона с условным форматированием по Kutools for Excel

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

1. Выберите диапазон, в котором вы хотите подсчитать или суммировать ячейки по цвету фона с условным форматированием, затем щелкните Кутулс Плюс > Считать по цвету.

После бесплатная установка Kutools for Excel, пожалуйста, сделайте следующее:

2. Затем в Считать по цвету диалоговое окно, выберите Условное форматирование под Цветовой метод список и проверка данных
под Тип цвета список. Затем вы можете просмотреть результат подсчета и подведения итогов в диалоговом окне. Смотрите скриншот:

количество документов по условному цвету-8

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

количество документов по условному цвету-9

Щелкните здесь, чтобы узнать больше о подсчете по цвету.

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


стрелка синий правый пузырь Вычислить ячейки по цвету шрифта или цвету фона


  • Подсчитайте повторяющиеся ячейки в столбце в Excel
  • Подсчет букв в ячейке / диапазоне / листе в Excel
  • Подсчет ячеек слияния только в Excel
  • Подсчитать / суммировать ячейки больше, но меньше числа

Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Skip to content

Сумма по цвету и подсчёт по цвету в Excel

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

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

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

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

Функции и макросы, которые мы рассмотрим в этой статье, помогут нам сделать следующее:

  • Как посчитать по цвету и суммировать по цвету на листе Excel
  • Как суммировать по цвету и сосчитать по цвету во всей рабочей книге
  • Пользовательские функции для получения цвета ячейки, цвета шрифта и цветового кода
  • Как считать по цвету и суммировать ячейки, окрашенные с использованием условного форматирования
  • Самый быстрый способ подсчета и суммирования ячеек по цвету в Excel

Как посчитать по цвету и суммировать по цвету на листе Excel

Предположим, у вас есть таблица со списком заказов, в которой ячейки в столбце «Количество» окрашены в зависимости от их значения в колонке «Выполнение» и даты: ячейки с выполняемыми заказами сроком до 30 дней от текущей даты  — желтые,  уже выполненные — зеленые, а просроченные заказы — красные.

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

  1. Откройте книгу Excel и нажмите Alt+F11, чтобы открыть редактор Visual Basic (VBE).
  2. Щелкните правой кнопкой мыши имя своей книги в разделе «Project–VBAProject» в правой части экрана, а затем выберите «Вставить» > «Модуль» в контекстном меню.

  1. Добавьте в вашу рабочую книгу следующий код:
Function GetCellColor(xlRange As Range)
  Dim indRow, indColumn As Long
  Dim arResults()
  Dim colorVal As Variant
  
  Application.Volatile
 
  If xlRange Is Nothing Then
      Set xlRange = Application.ThisCell
  End If
 
  If xlRange.Count > 1 Then
    ReDim arResults(1 To xlRange.Rows.Count, 1 To xlRange.Columns.Count)
     For indRow = 1 To xlRange.Rows.Count
       For indColumn = 1 To xlRange.Columns.Count
         colorVal = xlRange(indRow, indColumn).Interior.Color
         arResults(indRow, indColumn) = (colorVal Mod 256) & ", " & ((colorVal  256) Mod 256) & ", " & (colorVal  65536)
       Next
     Next
   GetCellColor = arResults
  Else
   colorVal = xlRange.Cells(1, 1).Interior.Color
   GetCellColor = (colorVal Mod 256) & ", " & ((colorVal  256) Mod 256) & ", " & (colorVal  65536)
  End If
End Function
 
Function GetCellFontColor(xlRange As Range)
  Dim indRow, indColumn As Long
  Dim arResults()
  Dim colorVal As Variant
 
  Application.Volatile
 
  If xlRange Is Nothing Then
      Set xlRange = Application.ThisCell
  End If
 
  If xlRange.Count > 1 Then
    ReDim arResults(1 To xlRange.Rows.Count, 1 To xlRange.Columns.Count)
     For indRow = 1 To xlRange.Rows.Count
       For indColumn = 1 To xlRange.Columns.Count
         colorVal = xlRange(indRow, indColumn).Font.Color
         arResults(indRow, indColumn) = (colorVal Mod 256) & ", " & ((colorVal  256) Mod 256) & ", " & (colorVal  65536)
       Next
     Next
   GetCellFontColor = arResults
  Else
   colorVal = xlRange.Cells(1, 1).Font.Color
   GetCellFontColor = (colorVal Mod 256) & ", " & ((colorVal  256) Mod 256) & ", " & (colorVal  65536)
  End If
End Function

Function CountCellsByColor(rData As Range, cellRefColor As Range) As Long
    Dim indRefColor As Long
    Dim cellCurrent As Range
    Dim cntRes As Long
 
    Application.Volatile
    cntRes = 0
    indRefColor = cellRefColor.Cells(1, 1).Interior.Color
    For Each cellCurrent In rData
        If indRefColor = cellCurrent.Interior.Color Then
            cntRes = cntRes + 1
        End If
    Next cellCurrent
 
    CountCellsByColor = cntRes
End Function
 
Function SumCellsByColor(rData As Range, cellRefColor As Range)
    Dim indRefColor As Long
    Dim cellCurrent As Range
    Dim sumRes
 
    Application.Volatile
    sumRes = 0
    indRefColor = cellRefColor.Cells(1, 1).Interior.Color
    For Each cellCurrent In rData
        If indRefColor = cellCurrent.Interior.Color Then
            sumRes = WorksheetFunction.Sum(cellCurrent, sumRes)
        End If
    Next cellCurrent
 
    SumCellsByColor = sumRes
End Function
 
Function CountCellsByFontColor(rData As Range, cellRefColor As Range) As Long
    Dim indRefColor As Long
    Dim cellCurrent As Range
    Dim cntRes As Long
 
    Application.Volatile
    cntRes = 0
    indRefColor = cellRefColor.Cells(1, 1).Font.Color
    For Each cellCurrent In rData
        If indRefColor = cellCurrent.Font.Color Then
            cntRes = cntRes + 1
        End If
    Next cellCurrent
 
    CountCellsByFontColor = cntRes
End Function
 
Function SumCellsByFontColor(rData As Range, cellRefColor As Range)
    Dim indRefColor As Long
    Dim cellCurrent As Range
    Dim sumRes
 
    Application.Volatile
    sumRes = 0
    indRefColor = cellRefColor.Cells(1, 1).Font.Color
    For Each cellCurrent In rData
        If indRefColor = cellCurrent.Font.Color Then
            sumRes = WorksheetFunction.Sum(cellCurrent, sumRes)
        End If
    Next cellCurrent
 
    SumCellsByFontColor = sumRes
End Function
  1. Сохраните свою книгу как «Книга Excel с поддержкой макросов (.xlsm)».

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

  1. Теперь, когда вся подготовительная работа сделана, выберите ячейку, в которой вы хотите получить результат, и введите в нее только что записанную нами пользовательскую функцию CountCellsByColor:

CountCellsByColor( диапазон ; код цвета )

здесь и далее эти аргументы означают:

диапазон – диапазон ячеек, в которых вы хотите произвести подсчеты по цвету,

код цвета – адрес ячейки-образца, цвет фона или шрифта которой соответствуют искомому цвету фона или шрифта.

В этом примере мы используем формулу, =CountCellsByColor(D2:D21;A24), где D2:D21— это диапазон, в котором вы хотите посчитать количество ячеек с цветом, а A24 — это ячейка, закрашенная нужным нам цветом, красным в нашем случае.

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

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

SumCellsByColor( диапазон ; код цвета)

Как показано на скриншоте выше, мы использовали формулу суммы по цвету, =SumCellsByColor(D2:D21;A24), где D2:D21 — это диапазон, а A24 — ячейка с образцом цвета.

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

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

=CountCellsByFontColor(D2:D21;A24)

Аналогично подсчитываем сумму чисел, имеющих определённый цвет шрифта, при помощи формулы:

=SumCellsByFontColor(D2:D21;A24)

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

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

Итак, после раскрашивания ячеек вручную, просто поместите курсор в любую ячейку и нажмите F2, а затем Enter. То есть, сделайте вид, что меняете содержимое какой-либо ячейки. Сумма и количество в пользовательской функции тут же будут обновлены. То же самое относится и к другим макросам, которые считают по цвету.

Как суммировать по цвету и сосчитать по цвету во всей рабочей книге

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

Function WbkCountCellsByColor(cellRefColor As Range)
  Dim vWbkRes
  Dim wshCurrent As Worksheet
 
  Application.ScreenUpdating = False
  Application.Calculation = xlCalculationManual
 
  vWbkRes = 0
  For Each wshCurrent In Worksheets
    wshCurrent.Activate
    vWbkRes = vWbkRes + CountCellsByColor(wshCurrent.UsedRange, cellRefColor)
  Next
  Application.ScreenUpdating = True
  Application.Calculation = xlCalculationAutomatic
 
  WbkCountCellsByColor = vWbkRes
End Function
 
Function WbkSumCellsByColor(cellRefColor As Range)
  Dim vWbkRes
  Dim wshCurrent As Worksheet
 
  Application.ScreenUpdating = False
  Application.Calculation = xlCalculationManual
 
  vWbkRes = 0
  For Each wshCurrent In Worksheets
    wshCurrent.Activate
    vWbkRes = vWbkRes + SumCellsByColor(wshCurrent.UsedRange, cellRefColor)
  Next
  Application.ScreenUpdating = True
  Application.Calculation = xlCalculationAutomatic
 
  WbkSumCellsByColor = vWbkRes
End Function

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

Единственный аргумент, который нужен этим функциям, это адрес ячейки с нужным цветом.

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

=WbkSumCellsByColor(A1)   

Формула отобразит сумму всех ячеек, закрашенных тем же цветом, на всех листах в вашей рабочей книге.

Пользовательские функции для получения цвета ячейки, цвета шрифта и цветового кода

Здесь вы найдете перечень всех функций, которые мы использовали ранее, а также несколько новых, которые извлекают цветовые коды.

Зачем они нам? Но ведь если ваша таблица окрашена не совсем стандартными цветами (например, светло-зеленым), то подобрать образец цвета для функций, которые мы рассматривали выше, будет весьма затруднительно. Если же у вас будет код нужного цвета, вы сможете использовать его при форматировании ячейки-образца, чтобы получить точное соответствие цвета.

Если вы вдруг забыли, как можно вручную раскрасить ячейку в нужный цвет, то напомню. Жмем Ctrl+1, затем Заливка – Другие цвета – Спектр – RGB формат. Вот туда и вставляем полученный код. Точное соответствие цвета будет обеспечено.

Примечание. Помните, что все эти формулы будут работать только в том случае, если вы добавили пользовательскую функцию в книгу Excel, как показано ранее в этой статье.

Функции для подсчета по цвету:

  • CountCellsByColor(диапазон; код цвета) ­– считает ячейки с заданным цветом фона.

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

= CountCellsByColor (F2: F14, A17) 

где F2: F14 — выбранный диапазон, а A17 — ячейка с нужным цветом фона. Вы можете использовать все остальные формулы, перечисленные ниже, аналогичным образом.

  • CountCellsByFontColor(диапазон; код цвета) – подсчитывает ячейки с указанным цветом шрифта.

Формулы для суммирования по цветам:

  • SumCellsByColor(диапазон; код цвета) – вычисляет сумму ячеек с определенным цветом фона.
  • SumCellsByFontColor(диапазон; код цвета) – вычисляет сумму ячеек с определенным цветом шрифта.

Функции для получения кода цвета ячейки:

  • GetCellFontColor(ячейка) – возвращает цветовой код цвета шрифта указанной ячейки.
  • GetCellColor(ячейка) – возвращает цветовой код цвета фона указанной ячейки.

Вот примеры использования функции цвета ячейки:

А на этим скриншоте мы получаем цветовой RGB код шрифта.

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

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

Конечно, вы можете найти в Интернете тонны кода VBA, который пытается это сделать, но все эти коды (по крайней мере, примеры, с которыми я сталкивался), не обрабатывают условное форматирование, такое как «Форматировать все ячейки на основе их значений», «Форматировать только наибольшие или наименьшие значения», «Форматировать только значения выше или ниже среднего», «Форматировать только уникальные или повторяющиеся значения». Кроме того, почти все эти коды VBA имеют ряд особенностей и ограничений, из-за которых они могут работать некорректно с определенными книгами или типами данных. В общем, вы можете испытать удачу и поискать в Google идеальное решение, и если вы его найдете, пожалуйста, вернитесь и опубликуйте свое открытие здесь!

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

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

Sub SumCountByConditionalFormat()
  Dim indRefColor As Long
  Dim cellCurrent As Object
  Dim cntRes As Long
  Dim sumRes
  Dim cntCells As Long
  Dim indCurCell As Long
 
  cntRes = 0
  sumRes = 0
  
  Set cellCurrent = Selection
  adr = Mid(cellCurrent.Address, InStr(cellCurrent.Address, ",") + 1, 20)
  adr1 = Left(adr, 4)
  adr2 = Left(cellCurrent.Address, InStr(cellCurrent.Address, ",") - 1)
  Range(adr2).Activate
  indRefColor = ActiveCell.DisplayFormat.Interior.Color
  Range(adr).Activate
  cntCells = Selection.CountLarge
  Range(adr).Select
  Range(adr).Activate
 Set cellCurrent = Selection
 For indCurCell = 1 To (cntCells - 1)
    If indRefColor = cellCurrent(indCurCell).DisplayFormat.Interior.Color Then
        cntRes = cntRes + 1
        sumRes = WorksheetFunction.Sum(cellCurrent(indCurCell), sumRes)
    End If
  Next
  MsgBox "Count=" & cntRes & vbCrLf & "Sum= " & sumRes & vbCrLf & vbCrLf & _
    "Color=" & Left("000000", 6 - Len(Hex(indRefColor))) & _
    Hex(indRefColor) & vbCrLf, , "Count & Sum by Conditional Format color"
End Sub

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

Опишем процесс пошагово:

  1. Добавьте приведенный выше код на лист, как описано в первом параграфе статьи .
  2. Выберите ячейку с нужным цветом.
  3. Нажмите и удерживайте Ctrl.
  4. Выберите диапазон, в котором вы хотите подсчитать цветные ячейки и/или суммировать по цвету, если у вас есть числовые данные.
  5. Отпустите клавишу Ctrl.
  6. НажНажмите комбинацию  Alt+F8, чтобы открыть список макросов в вашей книге.
  7. Выберите макрос SumCountByConditionalFormat и нажмите «Выполнить» .

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

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

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

Выполняем макрос, как показано на скриншоте ниже.

В результате вы увидите следующее сообщение с результатами:

Для этого примера мы выбрали столбец «Количество» и получили следующие цифры:

  1. Count — это количество ячеек определенного цвета, красного в нашем случае, который отмечает ячейки «Просрочен».
  2. Sum — это сумма значений всех красных ячеек в выбранной колонке, т.е. общее количество «Просроченных» заказов.
  3. Color — это шестнадцатеричный код цвета выбранной ячейки, в нашем случае D5.

Таким образом мы можем посчитать сумму и количество по цвету ячеек с условным форматированием.

Самый быстрый способ подсчета и суммирования ячеек по цвету в Excel

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

При этом не имеет значения, как установлены эти цвета – прямым форматированием ячейки либо при помощи условного форматирования.

Позвольте представить вам наш совершенно новый инструмент — «Счет и сумма по цвету» для Excel. Он имеет два варианта подсчета — «Один цвет» и «Все цвета», как видно на скриншоте ниже.

Подсчет и суммирование по одному цвету.

Вы нажимаете кнопку « Один цвет » на ленте, и в левой части рабочего листа открывается панель « Подсчет и сумма по цвету» . На панели вы выбираете:

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

После этого нажмите « Рассчитать » и сразу же увидите результат в нижней части панели! Помимо подсчета и суммы, надстройка вычисляет среднее значение и находит максимальное и минимальное значения. Никаких макросов, никаких формул, никакой боли :)

Обратите внимание, что подсчет возможен как по цвету фона, так и по цвету шрифта.

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

Опция «Все цвета» работает в основном так же, за исключением того, что вам не нужно выбирать цвет. В разделе «Result for ..» вы можете выбрать любой из параметров: Количество, Сумма, Среднее, Максимальное или Минимальное значение  и другие.

Если вы хотите скопировать результаты на свой рабочий лист, нажмите кнопку «Paste All» в нижней части панели .

В настоящее время надстройка доступна как часть Ultimate Suite for Excel . Это коллекция отличных инструментов, специально разработанных для решения самых утомительных, кропотливых и подверженных ошибкам задач в Excel.

В дополнение к надстройке «Подсчет и суммирование по цвету», Ultimate Suite включает более 70 инструментов, которые помогут вам объединить данные из разных листов, удалить дубликаты, сравнить листы на совпадения и различия и многое другое.

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

Функция СУММПРОИЗВ с примерами формул В статье объясняются основные и расширенные способы использования функции СУММПРОИЗВ в Excel. Вы найдете ряд примеров формул для сравнения массивов, условного суммирования и подсчета ячеек по нескольким условиям, расчета средневзвешенного значения…
Проверка данных с помощью регулярных выражений В этом руководстве показано, как выполнять проверку данных в Excel с помощью регулярных выражений и пользовательской функции RegexMatch. Когда дело доходит до ограничения пользовательского ввода на листах Excel, проверка данных очень полезна. Хотите…
Поиск и замена в Excel с помощью регулярных выражений В этом руководстве показано, как быстро добавить пользовательскую функцию в свои рабочие книги, чтобы вы могли использовать регулярные выражения для замены текстовых строк в Excel. Когда дело доходит до замены…
Как извлечь строку из текста при помощи регулярных выражений В этом руководстве вы узнаете, как использовать регулярные выражения в Excel для поиска и извлечения части текста, соответствующего заданному шаблону. Microsoft Excel предоставляет ряд функций для извлечения текста из ячеек. Эти функции…
4 способа отладки пользовательской функции Как правильно создавать пользовательские функции и где нужно размещать их код, мы подробно рассмотрели ранее в этой статье.  Чтобы решить проблемы при создании пользовательской функции, вам скорее всего придется выполнить…

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

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

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии