Ричард пытается использовать функцию «Найти и заменить» для подсчета ячеек, отформатированных с использованием определенного цвета заливки. Это нормально работает, за исключением случаев, когда заливка является результатом условного форматирования. В этом случае функция «Найти и заменить» их не найдет. Однако по-прежнему можно фильтровать строки, содержащие условно отформатированные ячейки, на основе их цвета заливки. Ричард задается вопросом, почему, если Autofilter может обнаруживать любой из типов форматирования ячеек, Find and Replace не может найти эти ячейки.

Все, что может быть предложено в качестве «почему», конечно, было бы домыслом. (Я много раз задавался вопросом, почему Microsoft решила делать то, что они делали.) При этом имеет смысл закодировать «Найти и заменить», чтобы вы могли найти то, что можно заменить. Цвета заливки, отображаемые в результате условного форматирования, являются всего лишь цветом отображения, а не реальным цветом заливки. Цвета дисплея не могут быть заменены, поэтому они не могут быть найдены.

Однако вы можете использовать другой метод для отображения нужного количества — макрос. Следующий макрос просматривает все ячейки в определенном диапазоне, и если найдено совпадение с желаемым цветом, счетчик увеличивается. (Исследуется объект .DisplayFormat, поэтому он имеет цвет «как отображается», что означает, что он также соответствует тому, что может отображать условное форматирование.)

Sub CountCellColors()

Dim Rng As Range     Dim c As Range     Dim Colr As Variant     Dim J As Integer     Dim sTemp As String

Set Rng = Range("A1:Z500") 'Change as needed     Colr = vbYellow            'Set color you want to count

J = 0     sTemp = ""

For Each c In Rng         If c.DisplayFormat.Interior.Color = Colr Then             J = J + 1             sTemp = sTemp & vbCr & "     " & c.Address         End If     Next c

Select Case J         Case 0             sTemp = "There are no colored cells in the range."

Case 1             sTemp = "There is 1 colored cell in the range:" _               & vbCr & sTemp         Case Else             sTemp = "There are " & J & " colored cells in the range:" _               & vbCr & sTemp     End Select     MsgBox sTemp End Sub

Когда макрос завершает работу, он отображает окно сообщения, в котором отображается количество совпадений цветов, а также адреса сопоставленных ячеек. Как написано, макрос проверяет ячейки A1: Z500 и ищет желтую заливку в ячейках. Обе строки, в которых установлены эти значения, можно изменить на то, что вам подходит.

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

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

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

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

Этот совет (13742) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.