Для того, чтобы программно подсчитать количество пустых ячеек в определённом диапазоне, можно воспользоваться нижеопубликованной функцией. При этом желательно учесть, что в отличии от формул, эта функция может быть использована при работе с несмежным диапазоном, кроме того, данную функцию можно использовать и как аналог стандартной функции рабочего листа =ПОДСЧИТАТЬПУСТОТЫ(), которая считает ячейки, содержащие апостроф ' или пустую строку "" пустыми.
Public Function CountEmpty&( _
iDiapazon As Range, Optional iAnalog As Boolean)
If Not iAnalog Then
CountEmpty = _
iDiapazon.Count - Application.CountA(iDiapazon)
Else
Dim iArea As Range
For Each iArea In iDiapazon.Areas
CountEmpty = _
CountEmpty + Application.CountBlank(iArea)
Next
End If
End Function
Пример вызова вышеопубликованной авторской функции из макроса :
Private Sub Test()
'CountEmpty
MsgBox CountEmpty([A1:C3,C6:G8]) '[...], False
MsgBox CountEmpty(Range("A1:C3,C6:G8"))
MsgBox CountEmpty(Union([A1:C3], [C6:G8]))
'CountBlank
MsgBox CountEmpty([A1:C3,C6:G8], True)
End Sub
Пример вызова из ячеек рабочего листа:
=CountEmpty((A1:C3;C6:G8))
Замена функции =ПОДСЧИТАТЬПУСТОТЫ() :
=CountEmpty((A1:C3;C6:G8);1)
=CountEmpty((A1:C3;C6:G8);ИСТИНА)