Листинг 2.47. Функция ПрописнНач
Function ПрописнНач(Текст)
' Пустой текст функция не обрабатывает
If Текст = "" Then ПрописнНач = «<>»: Exit Function
' Выделение первого символа и перевод его в верхний регистр
ПервыйСимвол = UCase(Left(Текст, 1))
' Выделение остальной части строки и перевод _
ее в нижний регистр
Обрубок = LCase(Mid(Текст, 2))
' Соединение частей строки и возврат значения
ПрописнНач = ПервыйСимвол & Обрубок
End Function
После выбора функции следует указать ячейку, текст которой нужно преобразовать. Результат преобразования отобразится в активной ячейке.
Функцию, о которой рассказывается в данном подразделе, наверняка оценят экономисты, а также работники бухгалтерских и финансовых служб предприятий (организаций). С ее помощью можно преобразовать хранящееся в ячейке число в денежное представление: например, число 53 будет отображаться как 53 руб. 0 0 коп., а число 2 7,43 – как 27 руб. 4 3 коп. Данная функция называется RubKop, ее код приведен в листинге 2.48.
Листинг 2.48. Функция RubKop
Function RubKop(Число)
' Пустые ячейки и ячейки, содержащие текст, функция _
не обрабатывает
If IsNumeric(Число) = False Or Число = "" Then RubKop = _
«<>»: Exit Function
' Из числа целой части – рубли
ДлинаЧисла = Len(Число)
ЦелаяЧасть = Fix(Число)
ДлинаЦелой = Len(ЦелаяЧасть)
' Вычисление длины дробной части
ДлинаДроби = ДлинаЧисла – ДлинаЦелой
If ДлинаДроби <> 0 Then
ДлинаДроби = ДлинаЧисла – ДлинаЦелой – 1
End If
' Формирование количества копеек в зависимости от длины _
дробной части
If ДлинаДроби = 0 Then
' Ноль копеек
Копейки = «00»
ElseIf ДлинаДроби = 1 Then
' Дробная часть состоит из одного числа – это _
десятки копеек
Копейки = Right(Число, ДлинаДроби) & "0"
ElseIf ДлинаДроби = 2 Then
' Дробная часть полностью соответствует количеству копеек
Копейки = Right(Число, ДлинаДроби)
Else
' Длина дробной части больше двух – округлим _
дробную часть
Копейки = Right(Число, ДлинаДроби)
If Mid(Копейки, 3, 1) > 4 Then
Копейки = Left(Копейки, 2) + 1
Else
Копейки = Left(Копейки, 2)
End If
End If
' Составление полной надписи из количества рублей и копеек
Рубли = ЦелаяЧасть
RubKop = Рубли & " " & «руб.» & " " & Копейки & " " & «коп.»
End Function
После выбора функции следует указать ячейку, содержимое которой нужно преобразовать. Результат преобразования будет показан в активной ячейке.
Подсчет количества повторов искомого текста
Функция CoincideCount позволяет быстро посчитать количество повторов текстового фрагмента в тексте ячеек заданного диапазона. Код функции приведен в листинге 2.49.
Листинг 2.49. Функция CoincideCount
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 приведен код этой функции.
Листинг 2.50. Функция СуммаВид
Function СуммаВид(Диапазон) As Double
' Просмотр всех ячеек заданного диапазона
Читать дальше
Конец ознакомительного отрывка
Купить книгу