Загрузите образец книги
В этом руководстве вы узнаете, как подсчитать или суммировать ячейки определенного цвета фона с помощью VBA.
Рассмотрим следующий диапазон в Excel.
В Excel нет встроенной функции для подсчета цветных ячеек. Вместо этого мы должны создать определяемую пользователем функцию с помощью VBA.
Подсчет ячеек - создание настраиваемой функции VBA
Подсчет количества ячеек определенного цвета с использованием VBA - это вопрос создания определяемой пользователем функции (UDF), которая будет перебирать все ячейки в диапазоне и определять, соответствует ли цвет фона каждой ячейки цвету фона, который вы проверяют, а затем используют эту функцию на листе Excel.
В VBA мы создаем функцию для подсчета выбранных ячеек.
12345678910111213141516 | Функция CountCellsByColor (rng As Range, ColorCell As Range) As DoubleDim dblCount As DoubleDim rngCell As Range'Прокрутите каждую ячейку в диапазонеДля каждого номера ячейки'проверьте, совпадает ли внутренний цвет с цветом выбранной ячейкиЕсли rngCell.Interior.Color = ColorCell.Interior.Color ТогдаЕсли IsNumeric (rngCell.Value) = True, то'увеличить счет на 1, если цвет правильный.dblCount = dblCount + 1Конец, еслиКонец, еслиСледующий'Вернуть значение в ExcelCountCellsByColor = dblCountКонечная функция |
Затем используйте эту функцию на листе, чтобы вернуть значение.
1 | = CountCellsByColor (B2: E10, G4) |
- Щелкните оранжевую ячейку в G4 и нажмите «Вставить функцию».
- Выбирать Определяемые пользователем в качестве категории, а затем выберите CountCellsByColor как функцию для использования.
- Нажмите Ok.
- Выделите диапазон, содержащий все цветные ячейки.
- Выберите ColorCell, а затем щелкните Ok.
Повторите процесс, чтобы подсчитать ячейки с зеленым цветом фона.
1 | = CountCellsByColor (B2: E10, G5) |
Ячейки суммы - создание настраиваемой функции VBA
Мы создаем аналогичную пользовательскую функцию в VBA для суммирования значений ячеек определенного цвета.
12345678910111213141516 | Функция SumCellsByColor (rng As Range, ColorCell As Range) As DoubleDim dblSum As DoubleDim rngCell As Range'Прокрутите каждую ячейку в диапазонеДля каждого номера ячейки'проверьте, совпадает ли внутренний цвет с цветом выбранной ячейкиЕсли rngCell.Interior.Color = ColorCell.Interior.Color ТогдаЕсли IsNumeric (rngCell.Value) = True, то'добавьте значение в вашу переменную, если цвет правильныйdblSum = dblSum + rngCell.ValueКонец, еслиКонец, еслиСледующий'Вернуть значение в ExcelSumCellsByColor = dblSumКонечная функция |
Затем мы снова использовали бы эту функцию в рабочем листе, чтобы суммировать требуемые ячейки.
1 | = SumCellsByColor (B2: E10, G7) |