Excel позволяет применять к ячейкам в книге все виды форматирования. Одна из вещей, которую вы можете сделать, — это «затенять» ячейки, используя узор или цвет. (Вы делаете это на вкладке «Шаблоны» диалогового окна «Формат ячеек».) В какой-то момент вы можете захотеть узнать, сколько ячеек в диапазоне закрашено.

В Excel нет формулы рабочего листа, которая позволяла бы подсчитывать затененные ячейки. Вместо этого вы должны разработать свой собственный макрос для этого. Следующий макрос — это пример решения этой проблемы. Он подсчитывает количество затененных ячеек в диапазоне от A1 до J20 и помещает счет в ячейку A1.

Sub CountColor()

Dim irow, icol As Integer

Cells(1, 1) = 0     For irow = 1 To 20         For icol = 1 To 10             If Cells(irow, icol).Interior.ColorIndex _               <> xlColorIndexNone Then                 Cells(1, 1) = Cells(1, 1) + 1             End If         Next icol     Next irow End Sub

Обратите внимание, что в основе процедуры лежит сравнение ColorIndex каждой ячейки и предварительно определенной константы xlColorIndexNone. Если они не равны, значит, ячейка каким-то образом закрашена.

Эту же базовую технику можно легко адаптировать к пользовательской функции.

Обратите внимание на то, что такое же сравнение выполняется для каждой ячейки:

Function FindShades(a As Range) As Integer     FindShades = 0     For Each c In a         If c.Interior.ColorIndex <> xlColorIndexNone Then             FindShades = FindShades + 1         End If     Next c End Function

Чтобы использовать эту функцию, просто используйте ее в ячейке как формулу и укажите диапазон в формуле:

= FindShades(B7:E52)

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (2059) применим к Microsoft Excel 97, 2000, 2002 и 2003.