Сума за кольором - Приклади коду VBA

Наступна функція обчислює загальне значення всіх клітинок у певному діапазоні, що мають певний колір:

На жаль, немає функції 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, натисніть тут

Ви допоможете розвитку сайту, поділившись сторінкою з друзями

wave wave wave wave wave