Работая в офисных программах, наступает период, когда от объема становится страшно. В таком случае есть 2 пути – перелопачивать все вручную или придумать что-то. Сегодня мы пойдем по 2 пути. Предположим вам нужно посчитать количество ячеек закрашенных 1 цветом. Если таблица насчитывает несколько тысяч строк, подсчет займет не 1 день. Для этого можно использовать фильтры, но и с ними это будет очень долго. Решая задачу, мы используем стандартную возможность MS Excel – написание макросов. Для тех кто никогда их не использовал мы распишем все детально. Опытные пользователи могут сразу спускаться к коду.
Предположим у нас есть не очень большая таблица, закрашенная разными цветами.
Рядом с этими ячейками мы закрасим другие теми же цветами. В них будет написано количество ячеек такого цвета.
В Excel 2003, чтобы создать макрос, нужно зайти в меню Сервис -> Макрос -> Редактор Visual Basic. В 2007 и новее в ленте выбрать вкладку Разработчик -> Редактор Visual Basic.
[ampmidlde]
Если у вас нет этой вкладки, ее нужно активировать через Параметры Excel -> Настройка ленты -> Показывать вкладку Разработчик.
Расположение флажка в разных версиях Office может отличатся.
Начнем писать нашу подпрограмму. Логика будет следующая:
1. Проходим по всем ячейкам диапазона;
2. Сравниваем их цвет с требуемым;
3. Суммируем совпадения;
4. Пишем количество.
Назовем нашу функцию СчетЦвета. Принимать она будет диапазон ячеек (VYa) для подсчета и еще 1 (Ya) с искомым цветом. Кроме этого нам понадобится переменная счетчик и переменная для подсчета количества – ColSum.
Далее в результирующую ячейку пишем код =СчетЦвета(Ячейки с цветами; Контрольный цвет)
Вот сам код макроса:
Public Function СчетЦвета(VYa As Range, Ya) As Long
Dim ColSum As Long
ColSum = 0
Dim TempCell As Range
For Each TempCell In VYa.Cells
If TempCell.Interior.Color = Ya.Interior.Color Then
ColSum = ColSum + 1
End If
Next
СчетЦвета = ColSum
End Function