Наступна функція обчислює загальне значення всіх клітинок у певному діапазоні, що мають певний колір:
На жаль, немає функції SUMIF для підсумовування за кольором комірки. Якщо ви хочете підсумувати за кольором, вам потрібно буде створити функцію у VBA.
Щоб використовувати цей код: Відкрийте редактор Visual Basic (Alt + F11), Вставте новий модуль (Вставити> Модуль) та скопіюйте та вставте потрібний код у модуль.
Функція підсумовування за кольором
1234567891011121314151617181920 | Функція Color_By_Numbers (Color_Range As Range, Color_Index As Integer) Як подвійний'Dim Color_By_Numbers As DoubleDim Cell'Буде розглядати клітини, які знаходяться в діапазоні, і якщо'властивість кольору інтер'єру відповідає необхідному кольору клітинки'тоді це підсумується'Loop Through rangeДля кожної клітинки в діапазоні Color_RangeЯкщо (Cell.Interior.ColorIndex = Color_Index) ТодіColor_By_Numbers = Колір_By_Numbers + Cell.ValueЗакінчити ЯкщоНаступна клітинаФункція завершення |
Це фактично "сума за кольором" - тому, якщо ви знаєте 56 кольорову палітру Excel і знаєте, наприклад, що колір 4 - світло -зелений, виконайте наступний виклик:
Color_By_Numbers (“A1: P20”, 4)
буде підсумовувати значення для всіх клітинок у діапазоні A1: P20, які мають світло -зелений колір.
Щоб спростити використання функції, наступна підпрограма розрахує загальне значення для кожного з 56 кольорів Excel. Він також надає всю палітру, щоб було легко побачити номер індексу для кожного кольору.
Підпрограма викликається на аркуші 1 і дивиться на діапазон
12345678910111213141516171819202122 | Приватна підкоманда CommandButton1_Click ()'Перегляну кожен колір і складе зведену таблицю значень'на аркуші 1 у комірці А1 і внизЗатемнити Current_Color_Number як ціле числоDim Color_Total як подвійнийДля 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# ТодіРобочі аркуші ("Аркуш1"). Діапазон ("a1"). Зсув (Поточний_колір_номера, 1). Значення = Колір_УсьогоЗакінчити ЯкщоНаступний Поточний_Колір_КількістьEnd Sub |
Щоб завантажити файл XLS, натисніть тут