Суммирование ячеек в excel по формату ячеек

MulTEx »

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

Данная функция является частью надстройки MulTEx


Суммирование ячеек по формату ячейки

Функция суммирует ячейки по их формату(правая кнопка мыши на ячейке —Формат ячеек(Format cells)-вкладка Число(Number)). К примеру: имеются данные по каким-либо финансовым операциям(продажи, суммы заключенных договоров, прибыль и т.д. и т.п.). И данные эти записаны по разному: где-то это формат долларов, где-то формат рублей, где-то гривны. А надо просуммировать отдельно гривны, отдельно доллары и отдельно рубли:
просуммировать на основании формата
В Excel нет функции, которая бы суммировала данные, различая формат ячейки. Вот тогда-то и может пригодится эта функция.
 

Вызов команды через стандартный диалог:

Мастер функцийКатегория «MulTEx»СуммаЯчеек_Формат

Вызов с панели MulTEx:

Сумма/Поиск/ФункцииМатематическиеСуммаЯчеек_Формат

Синтаксис:
=СуммаЯчеек_Формат($E$2:$E$20;J8;I8;$A$2:$A$20)
=СуммаЯчеек_Формат($E$2:$E$20;J8)
=СуммаЯчеек_Формат($E$2:$E$20;J8;I8)


 

ДиапазонСуммирования(

$E$2:$E$20

) — диапазон значений для суммирования. Можно указать несколько столбцов. Столбец с критерием(если планируется суммировать еще и по критерию) не обязательно должен входит в диапазон. Именно в этом диапазоне ищутся совпадения формата ячейки с указанным.

ЯчейкаОбразец(J8) — ячейка-образец формата. Ссылка на ячейку с форматом (ячейки именно с таким же форматом будут просуммированы).

Критерий(I8) — необязательный аргумент. Если указан, то суммируются ячейки с указанным критерием и форматом ячейки. Допускается применение в критерии символов подстановки — «*» и «?«. Если не указан, то суммируются все ячейки, к которым применен указанный формат. Если в диапазоне суммирования находятся ячейки с текстом, то они будут игнорироваться.
Так же данный аргумент может принимать в качестве критерия символы сравнения (<, >, =, <>, <=, =>):

  • «>0» — будут просуммированы все ячейки в ДиапазонеСуммирования, значения ячеек критериев для которых больше нуля;
  • «>=2» — будут просуммированы все ячейки в ДиапазонеСуммирования, значения ячеек критериев для которых больше или равно двум;
  • «<0» — будут просуммированы все ячейки в ДиапазонеСуммирования, значения ячеек критериев для которых меньше нуля;
  • «<=60» — будут просуммированы все ячейки в ДиапазонеСуммирования, значения ячеек критериев для которых меньше или равно 60;
  • «<>0» — будут просуммированы все ячейки в ДиапазонеСуммирования, значения ячеек критериев для которых не равно нулю;
  • «<>» — будут просуммированы все ячейки в ДиапазонеСуммирования, значения ячеек критериев для которых не пустые;
  • «*отчет*» — будут просуммированы все ячейки в ДиапазонеСуммирования, значения ячеек критериев для которых содержит слово «отчет»;

Вместо нуля может быть любое число или текст. Так же можно добавить ссылку на ячейку со значением: «<>»&D$1

ДиапазонКритерия($A$2:$A$20) — Необязательный аргумент. Указывается диапазон, в котором следует искать критерий(если критерий указан). ДиапазонКритерия должен быть равен по количеству ячеек ДиапазонуСуммирования. Если ДиапазонКритерия не указан, то критерий просматривается в ДиапазонеСуммирования.

Важно: Функция не вычисляется при изменении формата. Для пересчета функции после изменения параметров необходимо выделить ячейку и нажать F2-Enter. Либо нажать сочетания клавиш Shift+F9(пересчет функций активного листа) или клавишу F9(пересчет функций всей книги).

Примечание: данная функция не учитывает ячейки, к котjрым применено Условное Форматирование. Будет определен тот формат, который установлен через Формат ячеек стандартными средствами.


Расскажи друзьям, если статья оказалась полезной:

  Плейлист   Видеоинструкции по использованию надстройки MulTEx

СУММ (функция СУММ)

Функция СУММ добавляет значения. Вы можете складывать отдельные значения, диапазоны ячеек, ссылки на ячейки или данные всех этих трех видов.

Пример

  • =СУММ(A2:A10) Добавляет значения в ячейки A2:10.

  • =СУММ(A2:A10;C2:C10) Добавляет значения в ячейки A2:10, а также ячейки C2:C10.

Ваш браузер не поддерживает видео. Установите Microsoft Silverlight, Adobe Flash Player или Internet Explorer 9.

СУММ(число1;[число2];…)

Имя аргумента

Описание

number1   

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

Первое число для сложения. Это может быть число 4, ссылка на ячейку, например B6, или диапазон ячеек, например B2:B8.

число2-255   

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

Это второе число для сложения. Можно указать до 255 чисел.

Этот раздел содержит некоторые рекомендации по работе с функцией СУММ. Многие из этих рекомендаций можно применить и к другим функциям.

Метод =1+2 или =A+B. Вы можете ввести =1+2+3 или =A1+B1+C2 и получить абсолютно точные результаты, однако этот метод ненадежен по ряду причин.

  1. Опечатки. Допустим, вы пытаетесь ввести много больших значений такого вида:

    • =14598,93+65437,90+78496,23

    А теперь попробуйте проверить правильность записей. Гораздо проще поместить эти значения в отдельные ячейки и использовать их в формуле СУММ. Кроме того, значения в ячейках можно отформатировать, чтобы привести их к более наглядному виду, чем если бы они были в формуле.

    Используйте функцию СУММ, вместо того чтобы указывать значения прямо в формулах.  Ячейка D5 содержит формулу =СУММ(D2:D4)

  2. Ошибки #ЗНАЧ!, если ячейки по ссылкам содержат текст вместо чисел

    Допустим, вы используете формулу такого вида:

    • =A1+B1+C1 или =A1+A2+A3

    Пример неудачной формулы.  Ячейка D2 содержит формулу =A2+B2+C2

    Если ячейки, на которые указывают ссылки, содержат нечисловые (текстовые) значения, формула может вернуть ошибку #ЗНАЧ!. Функция СУММ пропускает текстовые значения и выдает сумму только числовых значений.

    Правильная формула.  Вместо выражения =A2+B2+C2 ячейка D2 содержит формулу =СУММ(A2:C2)

  3. Ошибка #ССЫЛКА! при удалении строк или столбцов

    Ошибка #ССЫЛКА! возникла из-за удаления столбца.  Формула приняла вид =A2+#ССЫЛКА!+B2

    При удалении строки или столбца формулы не обновляются: из них не исключаются удаленные значения, поэтому возвращается ошибка #ССЫЛКА!. Функция СУММ, в свою очередь, обновляется автоматически.

    Функция СУММ будет автоматически корректироваться при вставке и удалении строк и столбцов.

  4. Формулы не обновляют ссылки при вставке строк или столбцов

    Формулы =A+B+C не обновляются при добавлении строк

    При вставке строки или столбца формула не обновляется — в нее не включается добавленная строка, тогда как функция СУММ будет автоматически обновляться (пока вы не вышли за пределы диапазона, на который ссылается формула). Это особенно важно, когда вы рассчитываете, что формула обновится, но этого не происходит. В итоге ваши результаты остаются неполными, и этого можно не заметить.

    В примере показана формула СУММ, которая при добавлении столбца автоматически расширяется от =СУММ(A2:C2) до =СУММ(A2:D2)

  5. Функция СУММ — отдельные ячейки или диапазоны.

    Используя формулу такого вида:

    • =СУММ(A1;A2;A3;B1;B2;B3)

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

    • =СУММ(A1:A3;B1:B3)

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

  1. Мне нужно добавить, вычесть, умножить или поделить числа. Просмотрите серию учебных видео: Основные математические операции в Excel или Использование Microsoft Excel в качестве калькулятора.

  2. Как уменьшить или увеличить число отображаемых десятичных знаков? Можно изменить числовой формат. Выберите соответствующую ячейку или соответствующий диапазон и нажмите клавиши CTRL+1, чтобы открыть диалоговое окно Формат ячеек, затем щелкните вкладку Число и выберите нужный формат, указав при этом нужное количество десятичных знаков.

  3. Как добавить или вычесть значения времени? Есть несколько способов добавить или вычесть значения времени. Например, чтобы получить разницу между 8:00 и 12:00 для вычисления заработной платы, можно воспользоваться формулой =(«12:00»-«8:00»)*24, т. е. отнять время начала от времени окончания. Обратите внимание, что Excel вычисляет значения времени как часть дня, поэтому чтобы получить суммарное количество часов, необходимо умножить результат на 24. В первом примере используется формула =((B2-A2)+(D2-C2))*24 для вычисления количества часов от начала до окончания работы с учетом обеденного перерыва (всего 8,5 часов).

    Если вам нужно просто добавить часы и минуты, вы можете просто вычислить сумму, не умножая ее на 24. Во втором примере используется формула =СУММ(A6:C6), так как здесь нужно просто посчитать общее количество часов и минут, затраченных на задания (5:36, т. е. 5 часов 36 минут).

    Расчет времени

    Дополнительные сведения см. в статье Сложение и вычитание значений времени

  4. Как получить разницу между датами? Как и значения времени, значения дат можно добавить или вычесть. Вот распространенный пример вычисления количества дней между датами. Для этого используется простая формула =B2-A2. При работе со значениями дат и времени важно помнить, что дата или время начала вычитается из даты или времени окончания.

    Вычисление разницы между датами

    Другие способы работы с датами описаны в статье Вычисление разности двух дат.

  5. Как вычислить сумму только видимых ячеек? Иногда когда вы вручную скрываете строки или используете автофильтр, чтобы отображались только определенные данные, может понадобиться вычислить сумму только видимых ячеек. Для этого можно воспользоваться функцией ПРОМЕЖУТОЧНЫЕ.ИТОГИ. Если вы используете строку итогов в таблице Excel, любая функция, выбранная из раскрывающегося списка «Итог», автоматически вводится как промежуточный итог. Дополнительные сведения см. в статье Данные итогов в таблице Excel.

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

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

Подключитесь к эксперту. Учитесь у живых инструкторов.

См. также

Дополнительные сведения о функции СУММ

Функция СУММЕСЛИ суммирует только те значения, которые соответствуют одному условию

Функция СУММЕСЛИМН суммирует только те значения, которые соответствуют нескольким условиям

Функция СЧЁТЕСЛИ подсчитывает только те значения, которые соответствуют одному условию

Функция СЧЁТЕСЛИМН подсчитывает только те значения, которые соответствуют нескольким условиям

Полные сведения о формулах в Excel

Рекомендации, позволяющие избежать появления неработающих формул

Поиск ошибок в формулах

Математические и тригонометрические функции

Функции Excel (по алфавиту)

Функции Excel (по категориям)

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

Влияние формата ячеек на работу функции СУММ

При работе с функцией СУММ() в Excel следует учитывать особенности форматов данных, которые могут влиять на итоговые суммы при вычислениях.

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

Ошибки суммирования при точке вместо запятой

Заполните ячейки значениями как показано на рисунке (в ячейке B2 точка вместо запятой):

Исходные данные с ошибкой.

Выделите диапазон A1:B3. Потом нажмите на закладке «Главная» инструмент «Сумма» (или нажмите ALT+=), чтобы автоматически просуммировать столбцы по отдельности.

Точка вместо запятой для Excel является текстом по умолчанию. Функция СУММ() пропускает текстовые значения при суммировании ячеек. В результате мы видим разные суммы.

Результат суммирования чисел и текста.

Данная ошибка является опасной, особенно когда в таблице много данных. Во-первых, ее легко допустить, а во-вторых трудно заметить. Поэтому Excel в формате по умолчанию «Общий» выравнивает текст по левой стороне, а числа по правой. Если суммы не сходятся, стоит всем ячейкам задать формат «Общий», чтобы найти, где вместо запятой стоит точка. Но есть еще лучший способ.



Как найти текст в числовых значениях?

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

  1. Выберите инструмент «Главная»-«Найти и выделить»-«Перейти» (или нажмите комбинацию горячих клавиш CTRL+G).
  2. Окно переход.

  3. В появившимся окне нажмите на кнопку «Выделить».
  4. В окне «Выделение группы ячеек» нужно выбрать опцию «Константы» и отметить галочкой только «Текст». После чего нажать ОК.

Выделение групп ячеек.

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

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

Если точек слишком много, можно использовать инструмент «Главная»-«Найти и выделить»-«Заменить» (или комбинация клавиш CTRL+H). Он позволит в Excel заменить точку, на запятую – автоматически.

Инструмент найти и заменить.

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

Суммирование ячеек по формату ячейки

Gold_Barsik

Дата: Среда, 11.04.2018, 23:59 |
Сообщение № 1

Группа: Проверенные

Ранг: Обитатель

Сообщений: 451


Репутация:

6

±

Замечаний:
0% ±


2003

Как сложить значения по формату ячеек, если формат: Основной «м³»

 

Ответить

Che79

Дата: Четверг, 12.04.2018, 00:27 |
Сообщение № 2

Группа: Друзья

Ранг: Старожил

Сообщений: 1649


Репутация:

306

±

Замечаний:
0% ±


2013 Win, 365 Mac

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

Код

=СУММПРОИЗВ(A1:A18*(ОСТАТ(СТРОКА(A1:A18);4)))

К сообщению приложен файл:

5160060.xls
(27.0 Kb)


Делай нормально и будет нормально!

 

Ответить

Gold_Barsik

Дата: Четверг, 12.04.2018, 01:07 |
Сообщение № 3

Группа: Проверенные

Ранг: Обитатель

Сообщений: 451


Репутация:

6

±

Замечаний:
0% ±


2003

Спасибо! Отчасти помогло.

 

Ответить

sboy

Дата: Четверг, 12.04.2018, 09:29 |
Сообщение № 4

Группа: Друзья

Ранг: Участник клуба

Сообщений: 2566


Репутация:

724

±

Замечаний:
0% ±


Excel 2010

Код

=СУММЕСЛИ(A4:A18;»>1″)


Яндекс: 410016850021169

 

Ответить

Karataev

Дата: Четверг, 12.04.2018, 09:37 |
Сообщение № 5

Группа: Проверенные

Ранг: Старожил

Сообщений: 1330


Репутация:

528

±

Замечаний:
0% ±


Excel

Вариант макросом в виде пользовательской функции. Формула вставлена в «A1».
Макрос находится внутри файла. После открытия файла разрешите макросы.
В формулу выбирайте целый столбец. Макрос берет формат из первой ячейки столбца.


Киви-кошелек: 9166309108

 

Ответить

Gold_Barsik

Дата: Четверг, 18.07.2019, 00:02 |
Сообщение № 6

Группа: Проверенные

Ранг: Обитатель

Сообщений: 451


Репутация:

6

±

Замечаний:
0% ±


2003

sboy, Karataev, Большое спасибо!

 

Ответить

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
  • Суммирование ячеек в excel по условию с разных листов