Как в excel sumbycolor

Как в Microsoft Excel суммировать ячейки по цвету

Написал admin. Опубликовано в рубрике Офисные приложения. 20.01.2014

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

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

Вкладка разработчик

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

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

1
2
3
4
5
6
7
8
9
10
11
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. Надеюсь, она пригодится Вам при составлении отчетов.

Подписывайся на канал MyFirstComp на YouTube!

Загрузка…

Вычисления по цвету ячеек

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

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

На вкладке Разработчик (Developer) нажмите кнопку Visual Basic или сочетание клавиш Alt+F11, чтобы открыть редактор макросов. Если такой вкладки у вас не видно, то включите ее в настройках Файл — Параметры — Настройка ленты (File — Options — Customize Ribbon).

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

Function CountByColor(DataRange As Range, ColorSample As Range) As Long
    Dim cell As Range, n As Long
    
    For Each cell In DataRange
        If cell.Interior.Color = ColorSample.Interior.Color Then n = n + 1
    Next cell
    CountByColor = n
End Function

Function SumByColor(DataRange As Range, ColorSample As Range) As Double
    Dim cell As Range, total As Double
    
    For Each cell In DataRange
        If IsNumeric(cell) And cell.Interior.Color = ColorSample.Interior.Color Then total = total + cell.Value
    Next cell
    SumByColor = total
End Function

Function AverageByColor(DataRange As Range, ColorSample As Range) As Double
    Dim cell As Range, total As Double, n As Long
    
    For Each cell In DataRange
        If IsNumeric(cell) And cell.Interior.Color = ColorSample.Interior.Color Then
            total = total + cell.Value
            n = n + 1
        End If
    Next cell
    AverageByColor = total / n
End Function
 

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

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

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

Сумма, количество и среднее ячеек с заданным цветом заливки

Добавление условий

Аналогичный подход можно легко масштабировать, добавляя, при необходимости, дополнительные условия в проверку (команда if … then…). Так, например, если нам нужно при вычислении среднего арифметического учитывать не только цвет заливки, но и цвет шрифта (т.е. считать не просто жёлтые, а именно жёлто-красные ячейки), то код нашей макро-функции будет выглядеть так:

 Function AverageByColor2(DataRange As Range, ColorSample As Range) As Double
    Dim cell As Range, total As Double, n As Long
    
    For Each cell In DataRange
        If IsNumeric(cell) And cell.Interior.Color = ColorSample.Interior.Color And cell.Font.Color = ColorSample.Font.Color Then
            total = total + cell.Value
            n = n + 1
        End If
    Next cell
    AverageByColor2 = total / n
End Function

Разница только в добавленном через логическую связку «И» (and) условии на проверку соответствия цвета шрифта очередной проверяемой ячейки cell.Font.Color цвету шрифта ячейки-образца ColorSample.Font.Color.

Ограничения и нюансы пересчёта

У созданных нами макрофункций есть 2 важных нюанса.

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

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

Полностью решить эту проблему невозможно, но есть несколько способов её обойти:

  • Сделать двойной щелчок левой кнопкой мыши по ячейки с нашей формулой и нажать на Enter, т.е. имитировать повторный ввод функции в ячейку — Excel её заново пересчитает и выдаст обновленный результат.
  • Можно использовать сочетание клавиш Ctrl+Alt+F9, которое принудительно заставит Excel пересчитать всё формулы и функции независимо от того, изменились ли для них исходные данные. Но это сочетание нужно будет не забывать нажимать каждый раз при изменении исходных данных.
  • Добавить в код наших макрофункций (в любое место) команду Application.Volatile True. Эта команда языка Visual Basic заставляет Excel пересчитывать результаты нашей функции при изменении любой ячейки на листе (или по нажатию  F9). Однако, в этом случае, скорость работы наших функций заметно снизится, т.к. их пересчёт будет происходить постоянно — даже когда мы не меняли цвета или значения ячеек в исходных данных. Пользуйтесь этим методом осторожно.

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

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

  • Сортировка строк по цвету
  • Функции подсчета количества и суммы ячеек по цвету из надстройки PLEX
  • Что такое «ад условного форматирования» и как его победить

Содержание

  • 1 Цвет шрифта
  • 2 Количество вместо суммы
  • 3 Нюансы пересчета
  • 4 Ссылки по теме
  • 5 Пользовательские функции для определения кодов цвета заливки ячеек и цвета шрифта
    • 5.1 Функции, которые считают количество по цвету:
    • 5.2 Функции, которые суммируют значения по цвету ячейки:
    • 5.3 Функции, которые возвращают код цвета:
  • 6 Как использовать код, чтобы посчитать количество цветных ячеек и просуммировать их значения
  • 7 Рабочая книга с примерами для скачивания

Помечать ячейки цветом, используя заливку или цвет шрифта, очень удобно и наглядно. Если вы не дальтоник, конечно 🙂 Трудности возникают тогда, когда по такой раскрашенной таблице возникает необходимость сделать отчет. И если фильтровать и сортировать по цвету 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 и скопируйте туда текст вот такой функции:

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, то в Мастере функций (Вставка — Функция) в появившейся там категории Определенные пользователем (User Defined) можно найти нашу функцию и вставить ее на лист:

как сделать сумму в excel по цвету 

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

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

Цвет шрифта

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

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

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

Sum = Sum + 1

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

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

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

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

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

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

Заказывайте сушильные шкафы в компании ULAB

Написал admin. Опубликовано в рубрике Офисные приложения

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

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

как сделать сумму в excel по цвету

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

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

1 2 3 4 5 6 7 8 9 10 11 
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

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. Надеюсь, она пригодится Вам при составлении отчетов.

Оцените статью

(

проголосовало, средняя оценка:

из 5)

Теги: excel

Трекбэк с Вашего сайта.

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

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

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

Если не использовать сторонние надстройки, существует только одно решение – создать пользовательскую функцию (UDF). Если Вы мало знаете об этой технологии или вообще никогда не слышали этого термина, не пугайтесь, Вам не придётся писать код самостоятельно. Здесь Вы найдёте отличный готовый код (написанный нашим гуру Excel), и всё, что Вам потребуется сделать – это скопировать его и вставить в свою рабочую книгу.

  • Считаем и суммируем по цвету, когда ячейки раскрашены вручную
    • Считаем сумму и количество ячеек по цвету во всей книге
  • Считаем и суммируем по цвету, когда к ячейкам применены правила условного форматирования

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

Предположим, у Вас есть таблица заказов компании, в которой ячейки в столбце Delivery раскрашены в зависимости от их значений: Due in X Days – оранжевые, Delivered – зелёные, Past Due – красные.

как сделать сумму в excel по цвету

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

  1. Откройте книгу Excel и нажмите Alt+F11, чтобы запустить редактор Visual Basic for Applications (VBA).
  2. Правой кнопкой мыши кликните по имени Вашей рабочей книги в области Project – VBAProject, которая находится в левой части экрана, далее в появившемся контекстном меню нажмите Insert > Module.как сделать сумму в excel по цвету
  3. Вставьте на свой лист вот такой код:
Function GetCellColor(xlRange As Range)      Dim indRow, indColumn As Long      Dim arResults()         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             arResults(indRow, indColumn) = xlRange(indRow, indColumn).Interior.Color           Next         Next       GetCellColor = arResults      Else       GetCellColor = xlRange.Interior.Color      End If  End Function     Function GetCellFontColor(xlRange As Range)      Dim indRow, indColumn As Long      Dim arResults()         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             arResults(indRow, indColumn) = xlRange(indRow, indColumn).Font.Color           Next         Next       GetCellFontColor = arResults      Else       GetCellFontColor = xlRange.Font.Color      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 (Книга Excel с поддержкой макросов).Если Вы не слишком уверенно чувствуете себя с VBA, то посмотрите подробную пошаговую инструкцию и массу полезных советов в учебнике Как вставить и запустить код VBA в Excel.
  2. Когда все закулисные действия будут выполнены, выберите ячейки, в которые нужно вставить результат, и введите в них функцию CountCellsByColor:

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

В этом примере мы используем формулу =CountCellsByColor(F2:F14,A17), где F2:F14 – это диапазон, содержащий раскрашенные ячейки, которые Вы хотите посчитать. Ячейка A17 – содержит определённый цвет заливки, в нашем случае красный.

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

как сделать сумму в excel по цвету

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

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

как сделать сумму в excel по цвету

Как показано на снимке экрана ниже, мы использовали формулу:

=SumCellsByColor(D2:D14,A17)

где D2:D14 – диапазон, A17 – ячейка с образцом цвета.

Таким же образом Вы можете посчитать и просуммировать ячейки по цвету шрифта при помощи функций CountCellsByFontColor и SumCellsByFontColor соответственно.

как сделать сумму в excel по цвету

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

На самом деле, это нормальное поведение макросов в Excel, скриптов VBA и пользовательских функций (UDF). Дело в том, что все подобные функции вызываются только изменением данных на листе, но Excel не расценивает изменение цвета шрифта или заливки ячейки как изменение данных. Поэтому, после изменения цвета ячеек вручную, просто поставьте курсор на любую ячейку и кликните F2, а затем Enter, сумма и количество после этого обновятся. Так нужно сделать, работая с любым макросом, который Вы найдёте далее в этой статье.

Считаем сумму и количество ячеек по цвету во всей книге

Представленный ниже скрипт Visual Basic был написан в ответ на один из комментариев читателей (также нашим гуру Excel) и выполняет именно те действия, которые упомянул автор комментария, а именно считает количество и сумму ячеек определённого цвета на всех листах данной книги. Итак, вот этот код:

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()

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

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

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

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

Функции, которые считают количество по цвету:

  • CountCellsByColor(диапазон, код_цвета) – считает ячейки с заданным цветом заливки.В примере, рассмотренном выше, мы использовали вот такую формулу для подсчёта количества ячеек по их цвету:

    =CountCellsByColor(F2:F14,A17)

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

    Все перечисленные далее формулы работают по такому же принципу.

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

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

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

Функции, которые возвращают код цвета:

  • GetCellFontColor(ячейка) – возвращает код цвета шрифта в выбранной ячейке.
  • GetCellColor(ячейка) – возвращает код цвета заливки в выбранной ячейке.как сделать сумму в excel по цвету

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

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

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

Конечно, Вы можете найти тонны кода VBA в интернете, который пытается сделать это, но все эти коды (по крайней мере, те экземпляры, которые попадались мне) не обрабатывают правила условного форматирования, такие как:

  • Format all cells based on their values (Форматировать все ячейки на основании их значений);
  • Format only top or bottom ranked values (Форматировать только первые или последние значения);
  • Format only values that are above or below average (Форматировать только значения, которые находятся выше или ниже среднего);
  • Format only unique or duplicate values (Форматировать только уникальные или повторяющиеся значения).

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

Код VBA, приведённый ниже, преодолевает все указанные выше ограничения и работает в таблицах Microsoft Excel 2010 и 2013, с любыми типами условного форматирования (и снова спасибо нашему гуру!). В результате он выводит количество раскрашенных ячеек и сумму значений в этих ячейках, независимо от типа условного форматирования, применённого на листе.

Sub SumCountByConditionalFormat()      Dim indRefColor As Long      Dim cellCurrent As Range      Dim cntRes As Long      Dim sumRes      Dim cntCells As Long      Dim indCurCell As Long         cntRes = 0      sumRes = 0         cntCells = Selection.CountLarge      indRefColor = ActiveCell.DisplayFormat.Interior.Color         For indCurCell = 1 To (cntCells - 1)          If indRefColor = Selection(indCurCell).DisplayFormat.Interior.Color Then              cntRes = cntRes + 1              sumRes = WorksheetFunction.Sum(Selection(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, кликните по одной ячейке нужного цвета, затем отпустите Ctrl.
  4. Нажмите Alt+F8, чтобы открыть список макросов в Вашей рабочей книге.
  5. Выберите макрос SumCountByConditionalFormat и нажмите Run (Выполнить).как сделать сумму в excel по цветуВ результате Вы увидите вот такое сообщение:

    как сделать сумму в excel по цвету

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

  • Count – это число ячеек искомого цвета; в нашем случае это красноватый цвет, которым выделены ячейки со значением Past Due.
  • Sum – это сумма значений всех ячеек красного цвета в столбце Qty., то есть общее количество элементов с отметкой Past Due.
  • Color – это шестнадцатеричный код цвета выделенной ячейки, в нашем случае D2.

Рабочая книга с примерами для скачивания

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

Урок подготовлен для Вас командой сайта office-guru.ru
Источник: /> Перевел: Антон Андронов

Правила перепечаткиЕще больше уроков по Microsoft Excel

Оцените качество статьи. Нам важно ваше мнение:

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

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

1. Убедитесь, что среди вкладок на ленте Excel, присутствует «Разработчик»:

Скачать заметку Сумма по цвету в формате Word

Скачать заметку Сумма по цвету в формате pdf

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

2. Если такой закладки вы не видите, щелкните на кнопке Officeв левом верхнем углу и затем на кнопке «Параметры Excel»:

3. В открывшемся окне «Параметры Excel» перейдите на вкладку «Основные» и поставьте галочку в строке «Показывать меню Разработчик на ленте». Нажмите Ok

4. Создайте на листе Excel диапазон со значениями; несколько ячеек раскрасьте:

5. Перейдите на вкладку Разработчик и щелкните на VisualBasic:

6. У вас откроется окно VBA, содержащее окно VBAProject:

7. Если окна VBAProjectнет на экране

щелкните на меню View — Project Explorer:

8. Если вы хотите использовать создаваемый код VBA в любом Excel-файле, вам следует его записать в VBAProject, относящийся к Personal.xlsb. Если вы хотите применять код только в одном файле, с которым вы сейчас работаете, сохраните код в VBAProject`е именно этого файла (в нашем случае Сумма по цвету.xlsm):

9. Допустим, вы решили, что создаваемая функция будет использоваться в дальнейшем в различных файлах. Щелкните правой кнопкой мыши на VBAProject(Personal.xlsb) и выберите Insert — Module

Появится окно нового модуля, в которое следует перенести код:

Function СумЦвет(диапазон As Range, критерий As Range) As Double

‘ Определяет сумму значений в ячейках «диапазона»,

‘ цвет которых совпадает с цветом в ячейке «критерий»

Application.Volatile True

Dim i As Range

   For Each i In диапазон

        If i.Interior.Color = критерий.Interior.Color Then

           СумЦвет = СумЦвет + i

        End If

    Next

End Function

Номер вашего модуля (у меня он 5) будет зависеть от числа ранее созданных модулей.

Несколько слов о коде:

Function СумЦвет (диапазон AsRange, критерий AsRange) AsDouble/ Задает пользовательскую функция под названием СумЦвет с двумя параметрами: диапазоном суммирования и критерием – ячейкой, по цвету которой определяется, значения в каких ячейках суммировать.

Application.Volatile True/ Заставит нашу функцию пересчитываться при любом изменении значения в любой из ячеек на листе

Dim i AsRange/ Определяет переменную i, как диапазон ячеек

Далее следует цикл:

For Eachi In диапазон / Для всех ячеек из выбранного диапазона

If i.Interior.Color = критерий.Interior.Color Then/ Если цвет ячейки совпадает с критерием

СумЦвет = СумЦвет + i.Value/ то добавляем значение, хранящееся в ячейке в сумму

End If

Next

10. Вы создали пользовательскую функцию СумЦвет, которую можно найти в категории «Определенные пользователем»

11. Окно мастера функции выглядит также, как и для стандартной функции Excel

Хочу обратить ваше внимание на две особенности функции СумЦвет:

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

На основании комментариев, появившихся после первой публикации заметки, добавил в Excel-файл код функций:

  • КолЦвет  – определяет число ячеек выделенного цвета
  • СумНеЦвет – определяет сумму значений в ячейках выделенных любым цветом (не белого цвета)
  • КолНеЦвет – определяет число выделенных ячеек (не белых)

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

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

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

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


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

Считайте ячейки на основе цветов шрифта:

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

1. Удерживайте ALT + F11 ключи, и он открывает Окно Microsoft Visual Basic для приложений.

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

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

Public Function CountColour(pRange1 As Range, pRange2 As Range) As Double
'Update by Extendoffice
Application.Volatile
Dim rng As Range
For Each rng In pRange1
    If rng.Font.Color = pRange2.Font.Color Then
        CountColour = CountColour + 1
    End If
Next
End Function

3. Затем сохраните этот код и вернитесь на рабочий лист, а затем введите эту формулу в пустую ячейку. = CountColour (A1: D10; A2) , см. снимок экрана:

Внимание: В приведенной выше формуле A1: D10 это диапазон, который вы хотите использовать, и A2 это ячейка с определенным цветом шрифта, который вы хотите подсчитать.

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


Суммировать ячейки на основе цветов шрифта:

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

1. Удерживайте ALT + F11 ключи, и он открывает Окно Microsoft Visual Basic для приложений.

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

Код VBA: сумма ячеек на основе цветов шрифта:

Public Function SumByColor(pRange1 As Range, pRange2 As Range) As Double
'Update by Extendoffice
Application.Volatile
Dim rng As Range
Dim xTotal As Double
xTotal = 0
For Each rng In pRange1
    If rng.Font.Color = pRange2.Font.Color Then
        xTotal = xTotal + rng.Value
    End If
Next
SumByColor = xTotal
End Function

3. Затем сохраните этот код и вернитесь к исходному листу, а затем введите эту формулу = SumByColor (A1: D8; A1) в пустую ячейку, см. снимок экрана:

Внимание: В приведенной выше формуле A1: D10 это диапазон, который вы хотите использовать, и A2 это ячейка с определенным цветом шрифта, который вы хотите суммировать.

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


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

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

Советы:Чтобы применить это COUNTBYFONTCOLOR и SUMBYFONTCOLOR функции, во-первых, вы должны скачать Kutools for Excel, а затем быстро и легко примените эту функцию.

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

Считайте ячейки на основе цветов шрифта:

1. Щелкните ячейку, в которую вы хотите поместить результат подсчета, а затем щелкните Кутулс > Kutools Функции > Статистические и математические > COUNTBYFONTCOLOR, см. снимок экрана:

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

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


Суммировать ячейки на основе цветов шрифта:

1. Щелкните ячейку, в которую вы хотите поместить результат подсчета, а затем щелкните Кутулс > Kutools Функции > Статистические и математические > SUMBYFONTCOLOR, см. снимок экрана:

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

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

Нажмите, чтобы скачать Kutools for Excel и бесплатная пробная версия прямо сейчас!


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

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

Советы:Чтобы применить это Считать по цвету функция, во-первых, вы должны скачать Kutools for Excel, а затем быстро и легко примените эту функцию.

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

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

2. Нажмите Кутулс Плюс> Считать по цвету, см. снимок экрана:

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

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

Нажмите, чтобы скачать Kutools for Excel и бесплатная пробная версия прямо сейчас!


Другие статьи:

  • Подсчет и сумма ячеек на основе цвета фона в Excel
  • Предположим, у вас есть диапазон ячеек с разными цветами фона, такими как красный, зеленый, синий и т. Д., Но теперь вам нужно подсчитать, сколько ячеек в этом диапазоне имеют определенный цвет фона, и суммировать цветные ячейки с тем же определенным цветом. . В Excel нет прямой формулы для вычисления суммы и количества цветных ячеек, здесь я расскажу вам о некоторых способах решения этой проблемы.
  • Сумма / подсчет жирных чисел в диапазоне ячеек в Excel
  • Если у вас есть диапазон данных, содержащий несколько жирных чисел на листе, и теперь вы хотите суммировать или подсчитывать только выделенные жирным шрифтом ячейки, вы, конечно, можете сложить их по одной вручную, но это займет много времени. Как можно легко и быстро суммировать или подсчитывать только выделенные жирным шрифтом ячейки в Excel?
  • Применение цветового градиента к нескольким ячейкам
  • В Excel мы можем легко заполнить цвет фона для ячейки или нескольких ячеек, но иногда нам нужно, чтобы цвет был заполнен градиентом, как показано на следующем снимке экрана, как можно получить градиент цвета в ячейке или нескольких ячейках в Excel?
  • Объедините столбцы ячеек и сохраните цвет текста в Excel
  • Как все мы знаем, при конкатенации или объединении столбцов ячеек в один столбец форматирование ячеек (например, цвет шрифта текста, форматирование чисел и т. Д.) Будет потеряно. В этой статье я расскажу о некоторых хитростях, позволяющих объединить столбцы ячеек в один и максимально упростить сохранение цвета текста в Excel.
  • Подсчет или суммирование ячеек на основе цвета ячеек в таблице Google
  • Подсчет или суммирование значений ячеек на основе определенного цвета фона ячейки, чтобы получить результат, как показано на следующем снимке экрана. В этой статье я расскажу о том, как решить эту задачу в Google Sheet и Microsoft Excel.

Подсчет или суммирование ячеек на основе шрифта / фона / цвета условного форматирования:


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

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

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

вкладка kte 201905


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

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

офисный дно

Содержание

  1. Сложение значений в зависимости от цвета ячеек в EXCEL
  2. С помощью Автофильтра (ручной метод)
  3. С помощью Макрофункции ПОЛУЧИТЬ.ЯЧЕЙКУ()
  4. С помощью VBA
  5. Как в Microsoft Excel суммировать ячейки по цвету
  6. Как сделать сумму в excel по цвету?
  7. Цвет шрифта
  8. Количество вместо суммы
  9. Нюансы пересчета
  10. Ссылки по теме
  11. Пользовательские функции для определения кодов цвета заливки ячеек и цвета шрифта
  12. Функции, которые считают количество по цвету:
  13. Функции, которые суммируют значения по цвету ячейки:
  14. Функции, которые возвращают код цвета:
  15. Как использовать код, чтобы посчитать количество цветных ячеек и просуммировать их значения
  16. Рабочая книга с примерами для скачивания

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

history 8 сентября 2018 г.

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

Функции для суммирования значений по цвету ячеек в 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. Решений может быть множество:

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

Источник

Как в Microsoft Excel суммировать ячейки по цвету

Написал admin. Опубликовано в рубрике Офисные приложения. 20.01.2014

В 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. Надеюсь, она пригодится Вам при составлении отчетов.

Подписывайся на канал MyFirstComp на YouTube!

Источник

Как сделать сумму в excel по цвету?

Помечать ячейки цветом, используя заливку или цвет шрифта, очень удобно и наглядно. Если вы не дальтоник, конечно 🙂 Трудности возникают тогда, когда по такой раскрашенной таблице возникает необходимость сделать отчет. И если фильтровать и сортировать по цвету 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 и не задавайте в качестве первого аргумента целый столбец — «думать» будет долго 🙂

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

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

Заказывайте сушильные шкафы в компании ULAB

Написал admin. Опубликовано в рубрике Офисные приложения

В 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 2010 и 2013.

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

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

Если не использовать сторонние надстройки, существует только одно решение – создать пользовательскую функцию (UDF). Если Вы мало знаете об этой технологии или вообще никогда не слышали этого термина, не пугайтесь, Вам не придётся писать код самостоятельно. Здесь Вы найдёте отличный готовый код (написанный нашим гуру Excel), и всё, что Вам потребуется сделать – это скопировать его и вставить в свою рабочую книгу.

  • Считаем и суммируем по цвету, когда ячейки раскрашены вручную
    • Считаем сумму и количество ячеек по цвету во всей книге
  • Считаем и суммируем по цвету, когда к ячейкам применены правила условного форматирования

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

Предположим, у Вас есть таблица заказов компании, в которой ячейки в столбце Delivery раскрашены в зависимости от их значений: Due in X Days – оранжевые, Delivered – зелёные, Past Due – красные.

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

  1. Откройте книгу Excel и нажмите Alt+F11, чтобы запустить редактор Visual Basic for Applications (VBA).
  2. Правой кнопкой мыши кликните по имени Вашей рабочей книги в области Project – VBAProject, которая находится в левой части экрана, далее в появившемся контекстном меню нажмите Insert >Module.
  3. Вставьте на свой лист вот такой код:
  1. Сохраните рабочую книгу Excel в формате .xlsm (Книга Excel с поддержкой макросов).Если Вы не слишком уверенно чувствуете себя с VBA, то посмотрите подробную пошаговую инструкцию и массу полезных советов в учебнике Как вставить и запустить код VBA в Excel.
  2. Когда все закулисные действия будут выполнены, выберите ячейки, в которые нужно вставить результат, и введите в них функцию CountCellsByColor:

    В этом примере мы используем формулу =CountCellsByColor(F2:F14,A17), где F2:F14 – это диапазон, содержащий раскрашенные ячейки, которые Вы хотите посчитать. Ячейка A17 – содержит определённый цвет заливки, в нашем случае красный.

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

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

    Как показано на снимке экрана ниже, мы использовали формулу:

    где D2:D14 – диапазон, A17 – ячейка с образцом цвета.

    Таким же образом Вы можете посчитать и просуммировать ячейки по цвету шрифта при помощи функций CountCellsByFontColor и SumCellsByFontColor соответственно.

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

    На самом деле, это нормальное поведение макросов в Excel, скриптов VBA и пользовательских функций (UDF). Дело в том, что все подобные функции вызываются только изменением данных на листе, но Excel не расценивает изменение цвета шрифта или заливки ячейки как изменение данных. Поэтому, после изменения цвета ячеек вручную, просто поставьте курсор на любую ячейку и кликните F2, а затем Enter, сумма и количество после этого обновятся. Так нужно сделать, работая с любым макросом, который Вы найдёте далее в этой статье.

    Считаем сумму и количество ячеек по цвету во всей книге

    Представленный ниже скрипт Visual Basic был написан в ответ на один из комментариев читателей (также нашим гуру Excel) и выполняет именно те действия, которые упомянул автор комментария, а именно считает количество и сумму ячеек определённого цвета на всех листах данной книги. Итак, вот этот код:

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

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

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

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

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

    Функции, которые считают количество по цвету:

    • CountCellsByColor(диапазон, код_цвета) – считает ячейки с заданным цветом заливки.В примере, рассмотренном выше, мы использовали вот такую формулу для подсчёта количества ячеек по их цвету:

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

    Все перечисленные далее формулы работают по такому же принципу.

  3. CountCellsByFontColor(диапазон, код_цвета) – считает ячейки с заданным цветом шрифта.
  4. Функции, которые суммируют значения по цвету ячейки:

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

    Функции, которые возвращают код цвета:

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

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

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

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

    Конечно, Вы можете найти тонны кода VBA в интернете, который пытается сделать это, но все эти коды (по крайней мере, те экземпляры, которые попадались мне) не обрабатывают правила условного форматирования, такие как:

    • Format all cells based on their values (Форматировать все ячейки на основании их значений);
    • Format only top or bottom ranked values (Форматировать только первые или последние значения);
    • Format only values that are above or below average (Форматировать только значения, которые находятся выше или ниже среднего);
    • Format only unique or duplicate values (Форматировать только уникальные или повторяющиеся значения).

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

    Код VBA, приведённый ниже, преодолевает все указанные выше ограничения и работает в таблицах Microsoft Excel 2010 и 2013, с любыми типами условного форматирования (и снова спасибо нашему гуру!). В результате он выводит количество раскрашенных ячеек и сумму значений в этих ячейках, независимо от типа условного форматирования, применённого на листе.

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

    1. Добавьте код, приведённый выше, на Ваш лист, как мы делали это в первом примере.
    2. Выберите диапазон (или диапазоны), в которых нужно сосчитать цветные ячейки или просуммировать по цвету, если в них содержатся числовые данные.
    3. Нажмите и удерживайте Ctrl, кликните по одной ячейке нужного цвета, затем отпустите Ctrl.
    4. Нажмите Alt+F8, чтобы открыть список макросов в Вашей рабочей книге.
    5. Выберите макрос SumCountByConditionalFormat и нажмите Run (Выполнить).В результате Вы увидите вот такое сообщение:

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

    • Count – это число ячеек искомого цвета; в нашем случае это красноватый цвет, которым выделены ячейки со значением Past Due.
    • Sum – это сумма значений всех ячеек красного цвета в столбце Qty., то есть общее количество элементов с отметкой Past Due.
    • Color – это шестнадцатеричный код цвета выделенной ячейки, в нашем случае D2.

    Рабочая книга с примерами для скачивания

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

    Урок подготовлен для Вас командой сайта office-guru.ru
    Источник:/> Перевел: Антон Андронов

    Правила перепечаткиЕще больше уроков по Microsoft Excel

    Оцените качество статьи. Нам важно ваше мнение:

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

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

    1. Убедитесь, что среди вкладок на ленте Excel, присутствует «Разработчик»:

    Скачать заметку Сумма по цвету в формате Word

    Скачать заметку Сумма по цвету в формате pdf

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

    2. Если такой закладки вы не видите, щелкните на кнопке Officeв левом верхнем углу и затем на кнопке «Параметры Excel»:

    3. В открывшемся окне «Параметры Excel» перейдите на вкладку «Основные» и поставьте галочку в строке «Показывать меню Разработчик на ленте». Нажмите Ok

    4. Создайте на листе Excel диапазон со значениями; несколько ячеек раскрасьте:

    5. Перейдите на вкладку Разработчик и щелкните на VisualBasic:

    6. У вас откроется окно VBA, содержащее окно VBAProject:

    7. Если окна VBAProjectнет на экране

    щелкните на меню View — Project Explorer:

    8. Если вы хотите использовать создаваемый код VBA в любом Excel-файле, вам следует его записать в VBAProject, относящийся к Personal.xlsb. Если вы хотите применять код только в одном файле, с которым вы сейчас работаете, сохраните код в VBAProject`е именно этого файла (в нашем случае Сумма по цвету.xlsm):

    9. Допустим, вы решили, что создаваемая функция будет использоваться в дальнейшем в различных файлах. Щелкните правой кнопкой мыши на VBAProject(Personal.xlsb) и выберите Insert — Module

    Появится окно нового модуля, в которое следует перенести код:

    Function СумЦвет(диапазон As Range, критерий As Range) As Double

    ‘ Определяет сумму значений в ячейках «диапазона»,

    ‘ цвет которых совпадает с цветом в ячейке «критерий»

    For Each i In диапазон

    If i.Interior.Color = критерий.Interior.Color Then

    СумЦвет = СумЦвет + i

    Номер вашего модуля (у меня он 5) будет зависеть от числа ранее созданных модулей.

    Несколько слов о коде:

    Function СумЦвет (диапазон AsRange, критерий AsRange) AsDouble/ Задает пользовательскую функция под названием СумЦвет с двумя параметрами: диапазоном суммирования и критерием – ячейкой, по цвету которой определяется, значения в каких ячейках суммировать.

    Application.Volatile True/ Заставит нашу функцию пересчитываться при любом изменении значения в любой из ячеек на листе

    Dim i AsRange/ Определяет переменную i, как диапазон ячеек

    Далее следует цикл:

    For Eachi In диапазон / Для всех ячеек из выбранного диапазона

    If i.Interior.Color = критерий.Interior.Color Then/ Если цвет ячейки совпадает с критерием

    СумЦвет = СумЦвет + i.Value/ то добавляем значение, хранящееся в ячейке в сумму

    10. Вы создали пользовательскую функцию СумЦвет, которую можно найти в категории «Определенные пользователем»

    11. Окно мастера функции выглядит также, как и для стандартной функции Excel

    Хочу обратить ваше внимание на две особенности функции СумЦвет:

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

    На основании комментариев, появившихся после первой публикации заметки, добавил в Excel-файл код функций:

    • КолЦвет – определяет число ячеек выделенного цвета
    • СумНеЦвет – определяет сумму значений в ячейках выделенных любым цветом (не белого цвета)
    • КолНеЦвет – определяет число выделенных ячеек (не белых)

    Источник

Понравилась статья? Поделить с друзьями:
  • Как в excel substr
  • Как в excel sin числа
  • Как в excel rnd
  • Как в excel random
  • Как в excel online закрепить строку