Option Explicit
Sub CountColours()
'считает количество цветов заливки в выделенном диапазоне
Dim Rng As Range, iCell As Range
Dim iLastRow, TotalSum As Long
Dim UsedColours As New Collection, i As Long
'различные проверки
If TypeName(Selection) <> "Range" Then
MsgBox "Выделите ячейки на листе Excel!", 48, "Ошибка"
Exit Sub
End If
Set Rng = Selection.Cells
If Rng.Columns.Count > 1 Then
MsgBox "Выделите диапазон ячеек в одном столбце!", 48, "Ошибка"
Exit Sub
End If
If Rng.Cells.Count = 1 Then
MsgBox "Выделите диапазон ячеек!", 48, "Ошибка"
Exit Sub
End If
If Application.CountA(Rng) = 0 Then
MsgBox "Выделенный диапазон пуст!", 48, "Ошибка"
Exit Sub
End If
'заполняем коллекцию номерами цветов без задвоений. Ячейка без цвета -4142
On Error Resume Next
For Each iCell In Rng
UsedColours.Add iCell.Interior.ColorIndex, CStr(iCell.Interior.ColorIndex)
Next iCell
On Error GoTo 0
'результаты будем проставлять ниже на 2 ячейки
iLastRow = Cells(Rows.Count, ActiveCell.Column).End(xlUp).Row + 3
'считаем количество каждого цвета в выделенном диапазоне и проставляем в нужную ячейку
For i = 1 To UsedColours.Count
Cells(iLastRow, ActiveCell.Column).Interior.ColorIndex = UsedColours(i)
For Each iCell In Rng
If iCell.Interior.ColorIndex = UsedColours(i) Then TotalSum = TotalSum + 1
Next iCell
Cells(iLastRow, ActiveCell.Column) = TotalSum
TotalSum = 0
iLastRow = Cells(Rows.Count, ActiveCell.Column).End(xlUp).Row + 1
Next i
MsgBox "Цвета посчитаны", 64, "Конец"
End Sub
Проблема в том, что мне нужно, чтобы подсчет пустых и закрашенных ячеек столбца "А" велся в строке 1 начиная с ячейки "М1" и вправо (в шапке таблицы). При этом было бы неплохо не выделять диапазон для подсчета цветов, а брать его автоматически с ячейки "А2" и вниз до последней заполненной (чтобы подсчет цветов вёлся по изменению (появлению) текста в столбце "В" по Worksheet_Change (появился текст в ячейке столбца "В", соседняя ячейка столбца "А" закрасилась цветом, в ячейке "N1" (например) пересчиталось число ячеек с данным цветом, в ячейке "М1" уменьшилось количество ячеек без заливки). В каких ячейках первой строки какие цвета не важно, но желательно количество ячеек без заливки поместить в "М1" Прошу прощения, файл приложить не имею возможности - корпоративный инет, скачать можно, выложить нельзя.
_Boroda_, тоже верно, но полностью всегда заполнен диапазон столбца "А", а в столбце "В" может быть определенный текст в начале, середине и т.д..., но не обязательно в последней ячейке диапазона, тогда весь диапазон наверное не получится вычислить)
Цитата
А так- по большому счету не важно откуда брать данные - из заливки, или из данных, главное посчитать правильно))) и поместить в строку 1 полученные цифры! Формула не подходит - диапазоны всегда меняются.