У Михалы есть лист ответов на опрос, который включает разный текст разного цвета. Например, при ответе на опрос «Я не люблю собак» слово «собаки» может быть окрашено в красный цвет, а остальной текст — в черный цвет. В ответе может быть несколько цветов, например, в ответе «Я люблю собак и кошек» слово «собаки» может быть красным, а слово «кошки» — синим. Михале нужен способ выделить диапазон ячеек и подсчитать, сколько ячеек содержит текст определенного цвета, например красного или синего.

Лучше всего это сделать, разработав определяемую пользователем функцию, которая будет производить подсчет за вас. В следующем примере проходит через диапазон ячеек и производится подсчет любого указанного вами значения индекса цвета.

Function CountColorIndex(rng As Range, iColor As Integer)

Dim v As Variant     Dim rCell As Range     Dim str As String     Dim sChar As String     Dim x As Integer     Dim iCount As Integer

iCount = 0     For Each rCell In rng         v = rCell.Font.ColorIndex         If IsNull(v) Then             For x = 1 To Len(rCell.Value)

If rCell.Characters(x, 1).Font.ColorIndex _                   = iColor Then                     iCount = iCount + 1                     Exit For                 End If             Next         ElseIf v = iColor Then             iCount = iCount + 1         End If     Next     CountColorIndex = iCount End Function

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

Если цвет ячейки не равен нулю, функция определяет, соответствует ли цвет шрифта ячейки в целом желаемому цвету. Если это так, то счетчик увеличивается.

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

=CountColorIndex(B7:D42,3)

Эта формула проверяет диапазон B7: D42, чтобы увидеть, есть ли экземпляры красного цвета. Затем счетчик возвращается формулой.

Стоит отметить, что функция полагается на значения индекса цвета.

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

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

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

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

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

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