Среднее значение по цвету в excel

 

veselochka

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

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

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

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

  • Табл-2.xlsx (12.03 КБ)

 

Пытливый

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

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

Скажите, а сочетанием функции Промежуточные.Итоги и фильтрацией по цвету — нельзя решить ваш вопрос?

Кому решение нужно — тот пример и рисует.

 

Sanja

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

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

В файлах формата «*.xlsx» макросы не живут. Пересохраните в формате с поддержкой макросов («*.xlsm» или «*.xls»)

Согласие есть продукт при полном непротивлении сторон.

 

veselochka

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

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

Промежуточный итог ведь считает полностью столбец, а мне нужно что бы в одной ячейке среднее просчитывалось по желтому цвету а ниже по остальным..То есть в итоге одно среднее значение считает «яблоки» а другое «не яблоки» («не яблоки» могут быть разным наименованием, но в одном другом цвете)

 

Пытливый

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

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

:) Тогда макрос.

з.ы. Хосспади, ну почему, ПОЧЕМУ все так любят выделять цветом…. ну нет, чтобы рядом в доп.столбце поставить циферку какую… Насколько ж проще бы было формулам жить…

гхм… извините… :)

Кому решение нужно — тот пример и рисует.

 

veselochka

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

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

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

 

Sanja

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

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

#7

19.02.2016 16:04:46

Цитата
veselochka написал: Я нашла макросы по сумме и кол-ву..но..

Вы покажите их или нет? В файле

Согласие есть продукт при полном непротивлении сторон.

 

Z

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

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

Win 10, MSO 2013 SP1

#8

19.02.2016 16:05:56

Цитата
veselochka написал: а мне нужно что бы

OFF Есть одно правило: нужно — сам делаю или учусь делать, а хотелки предъявлять и без напряга — это, пжлста, пожалуйте в «Работу», со своим ТЗ и заказом… ;)
А вообще-то, если сами разукрашивали, то по этим принципам и считайте, чем не вариант?!. ;)

Изменено: Z19.02.2016 16:06:25

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

 

veselochka

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

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

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

И все таки если кто то знает как мне помочь, буду признательна.

 

Sanja

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

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

— Доктор! Меня все игнорируют!… :cry:
— Следующий!

Согласие есть продукт при полном непротивлении сторон.

 

JayBhagavan

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

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

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

#11

19.02.2016 16:19:21

ОФФ

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

Пытливый

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

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

Формулами с доп.столбцом (см.файл)

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

  • Табл-2.xlsx (12.13 КБ)

Кому решение нужно — тот пример и рисует.

 

veselochka

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

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

#13

19.02.2016 16:29:33

Цитата
Sanja написал:
В файлах формата «*.xlsx» макросы не живут. Пересохраните в формате с поддержкой макросов («*.xlsm» или «*.xls»)

Извините) что именно нужно показать?

С ув. Татьяна

 

veselochka

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

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

#14

19.02.2016 16:33:13

Цитата
Sanja написал: Вы покажите их или нет? В файле

Простите) что именно нужно показать? решение с простыми формулами?

С ув. Татьяна

 

Sanja

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

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

#15

19.02.2016 16:33:32

Ну я так понял, что Вы какие-то макросы хотите «допилить» под себя?

Цитата
Я нашла макросы по сумме и кол-ву..но

Или все «с нуля» надо?

Согласие есть продукт при полном непротивлении сторон.

 

veselochka

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

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

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

 

veselochka

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

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

#17

19.02.2016 16:38:49

Цитата
JayBhagavan написал:
Если я не ошибаюсь, то родной формат для 2003 — это «.xls», а не «.xlsx»
Что-то не сходится…

у меня в свойствах файла написано ексель 97-2003..или Лист Microsoft Office Excel (.xlsx)..

С ув. Татьяна

 

Z

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

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

Win 10, MSO 2013 SP1

#18

19.02.2016 16:40:24

Цитата
veselochka написал: мне нужно с 0 под мой пример

OFF Правила гласят: » 2.7. Если вам нужен не совет по самостоятельному решению задачи, а чтобы все сделали за вас — добро пожаловать в ветку

Работа

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

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

 

Sanja

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

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

См. файл

Согласие есть продукт при полном непротивлении сторон.

 

veselochka

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

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

Табл-2.xlsx (11.72 КБ)Наверное неудачный пример..прилагаю другой.. Мне нужно после зажатия фильтром по колонке «вид» видеть промежуточное среднее значение яблок и ниже в ячейке среднее значение остального.

 

Sanja

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

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

Ничего не понятно. Покажите в файле, руками, ЧТО Вы хотите видеть

Согласие есть продукт при полном непротивлении сторон.

 

veselochka

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

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

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

 

Александр Сергеевич

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

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

Если не отвечаю, пишите в личку.

#23

19.02.2016 16:55:37

Код
Function СрЖелтых(Диапозон As Range)
Dim а As Long, б As Long, в As Double
б = 0
в = 0

For а = 1 To Диапозон.CountLarge
 If Диапозон(а).Interior.Color = 65535 Then
    б = б + 1
    в = в + Диапозон(а)
    End If
 Next а
СрЖелтых = в / б
End Function

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

  • Табл-2.xlsm (17.18 КБ)

не нужно оскорблять.

 

veselochka

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

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

Sanja

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

 

Kuzmich

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

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

#25

19.02.2016 16:56:52

Цитата
Нужно просчитать среднее значение ячеек определенного цвета

Например для диапазона B4:C23 для наим «яблоки» получаем сумму и количество ячеек с цветом как в D1

Код
Sub iColor()
Dim cell As Range
Dim iSumma As Double
Dim n As Long
Dim iLastRow As Long
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
  For Each cell In Range("B4:C" & iLastRow)
    If Not IsEmpty(cell) And cell.Interior.ColorIndex = Range("D1").Interior.ColorIndex _
                         And Cells(cell.Row, 1) = "яблоки" Then
      iSumma = iSumma + cell
      n = n + 1
    End If
  Next
  MsgBox "Сумма ячеек с наим. яблоки: " & iSumma & vbCrLf & _
         "количество ячеек с наим. яблоки: " & n
End Sub
 

The_Prist

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

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

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

Надстройка для суммирования ячеек по цвету заливки или шрифта

скачиваете надстройку и добросовестно читаете справку. Для подсчета ячеек в функции CountCellColor предусмотрена возможность указания критерия. Это значит, что можно подсчитать только ячейки либо с определенным текстом/числом, либо с любым значением. В справке написано как.

Либо второй вариант. Читаете статьи и переносите к себе эти функции:

  • Подсчитать сумму ячеек по цвету заливки
  • Подсчитать сумму ячеек по цвету шрифта

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

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

 

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

 

veselochka

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

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

#28

19.02.2016 17:10:58

Цитата
The_Prist написал: скачиваете надстройку…

К сожалению не имею такой возможности) комп рабочий и запаролен админом на любые вмешательства кроме пользовательских(

С ув. Татьяна

 

Александр Сергеевич

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

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

Если не отвечаю, пишите в личку.

#29

19.02.2016 17:14:46

Цитата
veselochka написал: на любые вмешательства кроме пользовательских(

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

не нужно оскорблять.

 

The_Prist

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

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

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

#30

19.02.2016 17:57:53

Цитата
veselochka написал: запаролен админом на любые вмешательства кроме пользовательских

а может стоит сначала ознакомиться со ссылками, попробовать? Установка надстроек .xla не требует прав админа, равно как и коды из статей. Вы же уже применяли коды — почему-то они работают. Или злой админ только мои коды заблокировал?  :D

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

Когда вам нужно рассчитать среднее значение диапазона на основе цвета ячейки, как показано на скриншоте ниже, есть ли у вас хорошие идеи вместо расчета вручную? В Excel нет удобного способа ее решить. Если вас интересуют надстройки для Excel, то здесь я могу подсказать вам удобный инструмент —Kutools for Excel для быстрого усреднения значений по цвету ячейки.

документ среднее по цвету 1

Средние значения по цвету заливки ячеек

Средние значения по цвету шрифта ячейки

Демо


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

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

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

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

документ среднее по цвету 2

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

документ среднее по цвету 3

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

документ среднее по цвету 4


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

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

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

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

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

документ среднее по цвету 5

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

Работы С Нами Считать по цвету Утилита, вы можете подсчитывать или суммировать ячейки по стандартному цвету форматирования или условному цвету форматирования.




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

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

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

вкладка kte 201905


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

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

офисный дно

Комментарии (0)


Оценок пока нет. Оцените первым!

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 способа отладки пользовательской функции Как правильно создавать пользовательские функции и где нужно размещать их код, мы подробно рассмотрели ранее в этой статье.  Чтобы решить проблемы при создании пользовательской функции, вам скорее всего придется выполнить…

0 / 0 / 0

Регистрация: 31.03.2015

Сообщений: 4

1

Посчитать среднее значение в цветных ячейках

31.03.2015, 16:17. Показов 5889. Ответов 8


Студворк — интернет-сервис помощи студентам

Доброго времени суток.
Помогите разобраться в такой вот задачке.

Нужно в массиве данных посчитать среднее арифметическое только в ячейках определённого цвета (не условное форматирование) и только для положительных значений. Содержимое ячеек может меняться, результат подсчета должен меняться соответственно.

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



0



3827 / 2254 / 751

Регистрация: 02.11.2012

Сообщений: 5,930

31.03.2015, 16:24

2

файл пример в студию. Я так понимаю цветные ячейки всегда одни и те же?



0



15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

31.03.2015, 16:25

3

Для положительных без учета цвета это делается так,

формула массива

:

Код

=СРЗНАЧ(ЕСЛИ(диап>0;диап))

Добавьте условие по цвету.



0



0 / 0 / 0

Регистрация: 31.03.2015

Сообщений: 4

31.03.2015, 16:36

 [ТС]

4

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

Сначала и делала через СРЗНАЧ с условием, пока цвет был неважен. Как добавить условие цвета?

Миниатюры

Посчитать среднее значение в цветных ячейках
 



0



15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

31.03.2015, 16:46

5

Что за функция СумЕслиЦвет? Вам нужна функция, которая просто возвращает цвет, причем может работать с диапазоном. Может, найдется в вашей надстройке? Тогда можно написать:

Код

=СРЗНАЧ(ЕСЛИ((диап>0)*(Цвет(диап)=НужныйЦвет);диап))

В общем, пора посмотреть на файл.



0



0 / 0 / 0

Регистрация: 31.03.2015

Сообщений: 4

31.03.2015, 17:01

 [ТС]

6

Макрос для СумЕслиЦвет подсмотрела здесь на форуме: Посчитать количество цветных ячеек

Как забить цвет в условие СРЗНАЧ по прежнему не понимаю



0



Казанский

15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

31.03.2015, 17:34

7

Написал функцию ЦветСовпадает, которая возвращает ИСТИНА/ЛОЖЬ и может работать как с одной ячейкой, так и с диапазоном.
Желтая ячейка — ваша формула, в ст. AO-AS — пример работы функции с массивом.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Function ЦветСовпадает(Oblast As Range, Obrazec As Range)
Dim ObrazecCvet As Long, i&, j&
  ObrazecCvet = Obrazec.Cells(1).Interior.Color
  If Oblast.Count = 1 Then ЦветСовпадает = Oblast.Interior.Color = ObrazecCvet: Exit Function
  ReDim v(1 To Oblast.Rows.Count, 1 To Oblast.Columns.Count)
  For i = 1 To UBound(v)
    For j = 1 To UBound(v, 2)
      v(i, j) = Oblast.Cells(i, j).Interior.Color = ObrazecCvet
    Next
  Next
  ЦветСовпадает = v
End Function

Вложения

Тип файла: rar Книга1 (12).rar (31.3 Кб, 10 просмотров)



0



0 / 0 / 0

Регистрация: 31.03.2015

Сообщений: 4

31.03.2015, 18:35

 [ТС]

8

У меня эта функция не работает. Ни в вашем файле, ни при попытке вставить макрос в мой файл. Жалуется на недопустимое имя.



0



1337 / 308 / 74

Регистрация: 13.11.2008

Сообщений: 635

31.03.2015, 18:59

9

Цитата
Сообщение от Vsif
Посмотреть сообщение

Жалуется на недопустимое имя

Разрешите макросы, перезапустите Excel. Тогда функция заработает.



0



Сложение значений в зависимости от цвета ячеек в MS EXCEL

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

Функции для суммирования значений по цвету ячеек в EXCEL не существует (по крайней мере, в EXCEL 2016 и в более ранних версиях). Вероятно, подавляющему большинству пользователей это не требуется.

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

Необходимо сложить значения ячеек в зависимости от цвета фона. Основная задача: Как нам «объяснить» функции сложения, что нужно складывать значения, например, только зеленых ячеек?

Это можно сделать разными способами, приведем 3 из них: с помощью Автофильтра, Макрофункции ПОЛУЧИТЬ.ЯЧЕЙКУ() и VBA.

С помощью Автофильтра (ручной метод)

  • Добавьте справа еще один столбец с заголовком Код цвета.
  • Выделите заголовки и нажмите CTRL+SHIFT+L, т.е. вызовите Автофильтр (подробнее здесь)
  • Вызовите меню Автофильтра, выберите зеленый цвет

  • Будут отображены только строки с зелеными ячейками
  • Введите напротив каждого «зеленого» значения число 1

  • Сделайте тоже для всех цветов

Введите формулу =СУММЕСЛИ(B7:B17;E7;A7:A17) как показано в файле примера (лист Фильтр) .

Для подсчета значений используйте функцию СЧЕТЕСЛИ() .

С помощью Макрофункции ПОЛУЧИТЬ.ЯЧЕЙКУ()

Сразу предупрежу, что начинающему пользователю EXCEL будет сложно разобраться с этим и следующим разделом.

Идея заключается в том, чтобы автоматически вывести в соседнем столбце числовой код фона ячейки (в MS EXCEL все цвета имеют соответствующий числовой код). Для этого нам потребуется функция, которая может вернуть этот код. Ни одна обычная функция этого не умеет. Используем макрофункцию ПОЛУЧИТЬ.ЯЧЕЙКУ(), которая возвращает код цвета заливки ячейки (она может много, но нам потребуется только это ее свойство).

Примечание: Макрофункции — это набор функций к EXCEL 4-й версии, которые нельзя напрямую использовать на листе EXCEL современных версий, а можно использовать только в качестве Именованной формулы. Макрофункции — промежуточный вариант между обычными функциями и функциями VBA. Для работы с этими функциями требуется сохранить файл в формате с макросами *.xlsm

  • Сделайте активной ячейку В7(это важно, т.к. мы будем использовать относительную адресацию в формуле)
  • В Диспетчере имен введите формулу =ПОЛУЧИТЬ.ЯЧЕЙКУ(63;Макрофункция!A7)
  • Назовите ее Цвет

  • Закройте Диспетчер имен
  • Введите в ячейку В7формулу =Цвет и скопируйте ее вниз.

Сложение значений организовано так же как и в предыдущем разделе.

Макрофункция работает кривовато:

  • если вы измените цвет ячейки, то макрофункция не обновит значения кода (для этого нужно опять скопировать формулу из В7вниз или выделить ячейку, нажать клавишу F2 и затем ENTER)
  • функция возвращает только 56 цветов (так называемая палитра EXCEL), т.е. если цвета близки, например, зеленый и светло зеленый, то коды этих цветов могут совпасть. Подробнее об этом см. лист файла примера Colors . Как следствие, будут сложены значения из ячеек с разными цветами.

С помощью VBA

В файле примера на листе VBA приведено решение с помощью VBA. Решений может быть множество:

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

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

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

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

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

Перейдем в редактор VBA, для этого в панели вкладок выбираем Разработчик -> Visual Basic (или нажимаем комбинацию клавиш Alt + F11).
Создаем новый модуль и добавляем в него следующий код (напротив каждой строчки дается пояснение к коду):

Функция СУММЦВЕТ содержит два аргумента:

  • MyRange(обязательный аргумент) — диапазон ячеек для суммирования;
  • MyCell(обязательный аргумент) — ячейка, по цвету заливки которой рассчитывается сумма.

Функция СУММЦВЕТ теперь будет определяться при вводе формулы в ячейку, переходим из редактора на лист Excel и воспользуемся новой функцией:


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

Подсчет количества ячеек по цвету

Чтобы посчитать ячейки одного цвета достаточно немного видоизменить функцию для подсчета суммы — вместо прибавления значения текущей ячейки (Sum = Sum + cell.Value) мы добавляем 1 (Sum = Sum + 1).

При работе с данными функциями обратите внимание на два важных момента:

  • Если цвет выбранной ячейки определяется с помощью условного форматирования (т.е. цвет ячейки определяется не за счет заливки), то рассмотренные функции не сработают.
  • В случае изменения раскраски ячейки в Excel формулы автоматически не пересчитываются, так как не изменяется содержимое ячейки, поэтому для корректного расчета необходимо произвести пересчет формул. Комбинация клавиш Shift + F9 пересчитает формулы на активном листе (F9 — для всей книги).

Сумма ячеек по цвету

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

Чтобы исправить этот существенный недостаток можно использовать несложную пользовательскую функцию на Visual Basic, которая позволит нам суммировать ячейки с определенным цветом.

Откройте редактор Visual Basic:

  • В Excel 2003 и старше для этого нужно выбрать в меню Сервис — Макрос — Редактор Visual Basic (Tools — Macro — Visual Basic Editor)
  • В новых версиях Excel 2007-2013 перейти на вкладку Разработчик (Developer) и нажать кнопку Visual Basic. Если такой вкладки у вас не видно, то включите ее в настройках Файл — Параметры — Настройка ленты (File — Options — Customize Ribbon)

В окне редактора вставьте новый модуль через меню Insert — Module и скопируйте туда текст вот такой функции:

Если теперь вернуться в Excel, то в Мастере функций (Вставка — Функция) в появившейся там категории Определенные пользователем (User Defined) можно найти нашу функцию и вставить ее на лист:

У нее два аргумента:

  • DataRange — диапазон раскрашенных ячеек с числами
  • ColorSample — ячейка, цвет которой принимается как образец для суммирования

Цвет шрифта

Легко изменить нашу функцию, чтобы она учитывала не цвет заливки фона, а цвет шрифта ячейки. Для этого в строке 6 просто замените свойство Interior на Font в обеих частях выражения.

Количество вместо суммы

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

Нюансы пересчета

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

Полностью решить эту проблему невозможно, но можно ее существенно облегчить. Для этого в третьей строке нашей функции используется команда Application.Volatile True. Она заставляет Excel пересчитывать результаты нашей функции при изменении любой ячейки на листе (или по нажатию F9).

И помните о том, что наша функция перебирает все (и пустые тоже) ячейки в диапазоне DataRange и не задавайте в качестве первого аргумента целый столбец — «думать» будет долго 🙂

Как в Excel выделить ячейки цветом по условию

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

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

Автоматическое заполнение ячеек датами

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

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

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

Автоматическое заполнение ячеек актуальными датами

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

Как работает формула для автоматической генерации уходящих месяцев?

На рисунке формула возвращает период уходящего времени начиная даты написания статьи: 17.09.2017. В первом аргументе в функции DATA – вложена формула, которая всегда возвращает текущий год на сегодняшнюю дату благодаря функциям: ГОД и СЕГОНЯ. Во втором аргументе указан номер месяца (-1). Отрицательное число значит, что нас интересует какой был месяц в прошлом времени. Пример условий для второго аргумента со значением:

  • 1 – значит первый месяц (январь) в году указанном в первом аргументе;
  • 0 – это 1 месяца назад;
  • -1 – это 2 мес. назад от начала текущего года (то есть: 01.10.2016).

Последний аргумент – это номер дня месяца указано во втором аргументе. В результате функция ДАТА собирает все параметры в одно значение и формула возвращает соответственную дату.

Далее перейдите в ячейку C1 и введите следующую формулу:

Как видно теперь функция ДАТА использует значение из ячейки B1 и увеличивает номер месяца на 1 по отношению к предыдущей ячейки. В результате получаем 1 – число следующего месяца.

Теперь скопируйте эту формулу из ячейки C1 в остальные заголовки столбцов диапазона D1:L1.

Выделите диапазон ячеек B1:L1 и выберите инструмент: «ГЛАВНАЯ»-«Ячейки»-«Формат ячеек» или просто нажмите комбинацию клавиш CTRL+1. В появившемся диалоговом окне, на вкладке «Число», в разделе «Числовые форматы:» выберите опцию «(все форматы)». В поле «Тип:» введите значение: МММ.ГГ (обязательно буквы в верхнем регистре). Благодаря этому мы получим укороченное отображение значения дат в заголовках регистра, что упростит визуальный анализ и сделает его более комфортным за счет лучшей читабельности.

Обратите внимание! При наступлении января месяца (D1), формула автоматически меняет в дате год на следующий.

Как выделить столбец цветом в Excel по условию

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

  1. Выделите диапазон ячеек B2:L15 и выберите инструмент: «ГЛАВНАЯ»-«Стили»-«Условное форматирование»-«Создать правило». А в появившемся окне «Создание правила форматирования» выберите опцию: «Использовать формулу для определения форматируемых ячеек»
  2. В поле ввода введите формулу:
  3. Щелкните на кнопку «Формат» и укажите на вкладке «Заливка» каким цветом будут выделены ячейки актуального месяца. Например – зеленый. После чего на всех окнах для подтверждения нажмите на кнопку «ОК».

Столбец под соответствующим заголовком регистра автоматически подсвечивается зеленым цветом соответственно с нашими условиями:

Как работает формула выделения столбца цветом по условию?

Благодаря тому, что перед созданием правила условного форматирования мы охватили всю табличную часть для введения данных регистра, форматирование будет активно для каждой ячейки в этом диапазоне B2:L15. Смешанная ссылка в формуле B$1 (абсолютный адрес только для строк, а для столбцов – относительный) обусловливает, что формула будет всегда относиться к первой строке каждого столбца.

Автоматическое выделение цветом столбца по условию текущего месяца

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

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

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

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

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

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

  1. Выделите диапазон ячеек A2:A15 (то есть список номеров клиентов) и выберите инструмент: «ГЛАВНАЯ»-«Стили»-«Условное форматирование»-«Создать правило». А в появившемся окне «Создание правила форматирования» выберите опцию: «Использовать формулу для определения форматируемых ячеек»
  2. В этот раз в поле ввода введите формулу:
  3. Щелкните на кнопку «Формат» и укажите красный цвет на вкладке «Заливка». После чего на всех окнах нажмите «ОК».
  4. Заполоните ячейки текстовым значением «заказ» как на рисунке и посмотрите на результат:

Номера клиентов подсвечиваются красным цветом, если в их строке нет значения «заказ» в последних трех ячейках к текущему месяцу (включительно).

Анализ формулы для выделения цветом ячеек по условию:

Сначала займемся средней частью нашей формулы. Функция СМЕЩ возвращает ссылку на диапазон смещенного по отношении к области базового диапазона определенной числом строк и столбцов. Возвращаемая ссылка может быть одной ячейкой или целым диапазоном ячеек. Дополнительно можно определить количество возвращаемых строк и столбцов. В нашем примере функция возвращает ссылку на диапазон ячеек для последних 3-х месяцев.

Важная часть для нашего условия выделения цветом находиться в первом аргументе функции СМЕЩ. Он определяет, с какого месяца начать смещение. В данном примере – это ячейка D2, то есть начало года – январь. Естественно для остальных ячеек в столбце номер строки для базовой ячейки будет соответствовать номеру строки в котором она находиться. Следующие 2 аргумента функции СМЕЩ определяют на сколько строк и столбцов должно быть выполнено смещение. Так как вычисления для каждого клиента будем выполнять в той же строке, значение смещения для строк указываем –¬ 0.

В тоже время для вычисления значения третьего аргумента (смещение по столбцам) используем вложенную формулу МЕСЯЦ(СЕГОДНЯ()), Которая в соответствии с условиями возвращает номер текущего месяца в текущем году. От вычисленного формулой номера месяца отнимаем число 4, то есть в случаи Ноября получаем смещение на 8 столбцов. А, например, для Июня – только на 2 столбца.

Последнее два аргумента для функции СМЕЩ определяют высоту (в количестве строк) и ширину (в количестве столбцов) возвращаемого диапазона. В нашем примере – это область ячеек с высотой на 1-ну строку и шириной на 4 столбца. Этот диапазон охватывает столбцы 3-х предыдущих месяцев и текущий.

Первая функция в формуле СЧЕТЕСЛИ проверяет условия: сколько раз в возвращаемом диапазоне с помощью функции СМЕЩ встречается текстовое значение «заказ». Если функция возвращает значение 0 – значит от клиента с таким номером на протяжении 3-х месяцев не было ни одного заказа. А в соответствии с нашими условиями, ячейка с номером данного клиента выделяется красным цветом заливки.

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

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

В Microsoft Excel, при создании таблиц, очень удобно и наглядно помечать ячейки цветом. Но что делать, если нам понадобиться суммировать значения ячеек одного цвета? По умолчанию, данной функции в Excel до сих пор нет. Решить эту проблему можно написав макрос в Visual Basic.

Для этого в Excel версии 2007-2013 переходим на вкладку Разработчик и нажимаем Visual Basic.

Если такой вкладки нет, то включаем ее следующим образом: Файл/Параметры/Настройка ленты и ставим галочку напротив слова Разработчик.

В открывшемся окне редактора нажимаем Insert/Module и копируем туда следующий текст:

Public Function SumByColor(DataRange As Range, ColorSample As Range) As Double Dim Sum As Double Application.Volatile True For Each cell In DataRange If cell.Interior.Color = ColorSample.Interior.Color Then Sum = Sum + cell.Value End If Next cell SumByColor = Sum End Function

Сохраняем изменения. Далее в Excel на вкладке Формулы выбираем пункт Вставить функцию. Необходимо выбрать категорию Определенные пользователем – тогда отобразится наша функция – SumByColor.

У этой функции 2 аргументы:

DataRange – диапазон ячеек с числами;

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

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

Понравилась статья? Поделить с друзьями:
  • Среднее значение по массиву excel
  • Среднее значение в excel онлайн
  • Среднее значение по всему столбцу excel
  • Среднее значение в excel не учитывая ноль
  • Среднее геометрическое чисел excel