Function CoincideCount(Text, Search)
' Проверка правильности входных данных _
(аргумента Search)
If IsArray(Search) = True Then Exit Function
If IsError(Search) = True Then Exit Function
If IsEmpty(Search) = True Then Exit Function
' Просмотр заданного в параметре Text диапазона
For Each iCell In Text
' Анализируются только ячейки, содержащие _
корректные значения
If Not IsError(iCell) Then
' iText – строка для просмотра (в нижнем регистре)
iText = LCase(iCell)
' iSearch – искомое значение (в нижнем регистре)
iSearch = LCase(Search)
' Длина искомой строки
iLen = Len(Search)
' Первый поиск строки iSearch в строке iText _
(этот и последующий поиски производятся без _
учета регистра символов)
iNumber = InStr(iText, iSearch)
While iNumber > 0
' Поиск следующего вхождения строки
iNumber = InStr(iNumber + iLen, iText, iSearch)
' Подсчет количества вхождений
CoincideCount = CoincideCount + vbNull
Wend
End If
Next
End Function
В отличие от функций, описание которых приведено выше, данная функция имеет два аргумента. На втором шаге в окне Аргументы функции необходимо задать область поиска (это может быть как одна ячейка, так и диапазон) и указать расположение искомого текста. Результат отображается в ячейке, которая была выделена до вызова данной функции. Важно отметить, что при поиске не учитывается регистр символов, то есть для этой функции строки слово и СлоВо одинаковы.
Функция СуммаВид, о которой рассказывается в данном подразделе, отличается от стандартной функции Excel СУММ тем, что позволяет суммировать данные только видимого диапазона. Иначе говоря, при расчете суммы данная функция игнорирует значения, расположенные в скрытых ячейках. В листинге 2.50 приведен код этой функции.
Function СуммаВид(Диапазон) As Double
' Просмотр всех ячеек заданного диапазона
For Each Ячейка In Диапазон
' Анализ только видимых ячеек
If Not Ячейка.EntireRow.Hidden And Not _
Ячейка.EntireColumn.Hidden Then
' При расчете учитываются только ячейки _
с численными значениями
If IsNumeric(Ячейка) = True Then
СуммаВид = СуммаВид + Ячейка
End If
End If
Next
End Function
После выбора функции нужно задать единственное условие – диапазон ячеек, данные из которых необходимо сложить. Результат отображается в ячейке, в которой был установлен курсор до вызова этой функции.
Удобный способ суммирования диапазона ячеек реализован в функции Сумма. Она отличается от стандартной функции Excel СУММ тем, что при суммировании курсор может находиться внутри этого же диапазона, но при этом циклическая ошибка не возникнет и соответственно сообщение о ней выводиться не будет. Следует учитывать, что ячейка с функцией в расчетах не участвует. Код функции Сумма выглядит следующим образом (листинг 2.51).
Function Сумма(Диапазон, АдресЯчейки) As Double
' Просмотр всех ячеек диапазона
For Each Ячейка In Диапазон
' Проверка, чтобы в суммировании не участвовала _
ячейка с формулой
If АдресЯчейки.Address <> Ячейка.Address Then
' В суммировании участвуют только ячейки _
с численными значениями
If IsNumeric(Ячейка) = True Then
Сумма = Сумма + Ячейка
End If
End If
Next
End Function