У Синди есть полностью отформатированный рабочий лист, в котором во многих ячейках используется цвет.

В некоторых ячейках есть значения; многие этого не делают. Ей нужен способ подсчитать все цветные ячейки, которые пусты, и ей интересно, есть ли быстрый способ сделать это.

Есть несколько способов получить нужную информацию. Один из способов — выполнить следующие шаги:

  1. Выясните, какой цвет вы хотите использовать для подсчета.

  2. Нажмите F5. Excel отображает диалоговое окно «Перейти».

  3. Щелкните кнопку Special. Excel отображает диалоговое окно «Перейти к специальному».

(См. Рис. 1.)

  1. Выберите радиокнопку Пробелы.

  2. Щелкните ОК. Теперь все пустые ячейки на листе выделены.

  3. Нажмите Ctrl + F. Excel отображает вкладку «Найти» диалогового окна «Найти и заменить».

  4. Нажмите кнопку «Параметры», чтобы развернуть диалоговое окно. (См. Рис. 2.)

  5. Нажмите кнопку «Форматировать». Excel отображает диалоговое окно «Найти формат».

  6. Убедитесь, что отображается вкладка «Заливка». (См. Рис. 3.)

  7. Нажмите на цвет, который хотите найти. (Это цвет, который вы определили на шаге 1.)

  8. Нажмите OK, чтобы закрыть диалоговое окно «Найти формат».

  9. Щелкните «Найти все».

Когда вы выполняете эти шаги, Excel показывает в нижней части диалогового окна «Найти и заменить», сколько ячеек было найдено, соответствующих вашему цвету. Поскольку вы начали поиск с выделенными только пустыми ячейками, в результате подсчитывается все пустые ячейки, заполненные цветом.

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

Sub CountBlankColors1()

Dim c As Range     Dim J As Integer     Dim ColorCount(56) As Long

ActiveSheet.Range("a1").CurrentRegion.SpecialCells(xlCellTypeBlanks).Select

For Each c In Selection         With c.Interior             If .Pattern <> xlNone Then                 If .ColorIndex <> xlNone Then                     If IsEmpty(c) Then                         ColorCount(.ColorIndex) = _                           ColorCount(.ColorIndex) + 1                     End If                 End If             End If         End With     Next c

sTemp = "These are the color counts" & vbCrLf & vbCrLf     For J = 0 To 56         If ColorCount(J) > 0 Then             sTemp = sTemp & "Color " & J & ": " & ColorCount(J) & vbCrLf         End If     Next J

MsgBox sTemp End Sub

Конечно, вы можете не подсчитывать разные цвета по отдельности.

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

Sub CountBlankColors2()

Dim c As Range     Dim x As Long

x = 0     ActiveSheet.Range("a1").CurrentRegion.SpecialCells(xlCellTypeBlanks).Select

For Each c In Selection         If c.Interior.Pattern <> xlNone Then             If c.Interior.ColorIndex <> xlNone Then                 If IsEmpty(c) Then x = x + 1             End If         End If     Next c     MsgBox "Number of colored blank cells: " & x End Sub

Следует отметить, что эти подходы не принимают во внимание, окрашена ли ячейка с использованием условного формата или нет.

(Фактически, они вообще не принимают во внимание условные форматы.)

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

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

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

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

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