Следующая функция вычисляет общее значение всех ячеек в определенном диапазоне, которые имеют определенный цвет:
К сожалению, нет функции СУММЕСЛИ для суммирования на основе цвета ячеек. Если вы хотите суммировать по цвету, вам нужно будет создать функцию в VBA.
Чтобы использовать этот код: откройте редактор Visual Basic (Alt + F11), вставьте новый модуль (Insert> Module) и скопируйте и вставьте нужный код в модуль.
Функция суммирования по цвету
1234567891011121314151617181920 | Функция Color_By_Numbers (Color_Range как диапазон, Color_Index как целое число) как Double'Dim Color_By_Numbers As DoubleТусклая ячейка'Будет смотреть на ячейки, которые находятся в диапазоне, и если'внутреннее свойство цвета соответствует требуемому цвету ячейки'тогда он будет суммировать'Проходной диапазонДля каждой ячейки в Color_RangeЕсли (Cell.Interior.ColorIndex = Color_Index) ТогдаColor_By_Numbers = Color_By_Numbers + Cell.ValueКонец, еслиСледующая ячейкаКонечная функция |
По сути, это «сумма по цвету» - поэтому, если вы знаете 56 цветовую палитру Excel и знаете, например, что цвет 4 светло-зеленый, тогда следующий вызов:
Color_By_Numbers («A1: P20», 4)
суммирует значения для всех ячеек в диапазоне A1: P20, которые имеют светло-зеленый цвет.
Чтобы упростить использование функции, следующая подпрограмма вычислит общее значение для каждого из 56 цветов Excel. Это также дает весь вкус, так что легко увидеть порядковый номер для каждого цвета.
Подпрограмма вызывается на листе 1 и просматривает диапазон
12345678910111213141516171819202122 | Частная подпрограмма CommandButton1_Click ()'Рассмотрим каждый цвет и создадим сводную таблицу значений'на листе 1 в ячейке A1 и нижеDim Current_Color_Number As IntegerDim Color_Total as DoubleДля Current_Color_Number = от 1 до 56Color_Total = Color_By_Numbers (Листы ("Sheet2"). Диапазон ("a11: aa64"), Current_Color_Number)Листы ("Sheet1"). Диапазон ("A1"). Смещение (Current_Color_Number, 0) = Current_Color_NumberЛисты ("Sheet1"). Диапазон ("A1"). Смещение (Current_Color_Number, 0) .Interior.ColorIndex = Current_Color_NumberЕсли Color_Total 0 # ТогдаЛисты ("Sheet1"). Диапазон ("a1"). Offset (Current_Color_Number, 1) .Value = Color_TotalКонец, еслиСледующий Current_Color_NumberКонец подписки |
Чтобы скачать файл XLS, нажмите здесь