×
Traktatov.net » Excel. Трюки и эффекты » Читать онлайн
Страница 63 из 146 Настройки

Перевод чисел в «деньги»

Функцию, о которой рассказывается в данном подразделе, наверняка оценят экономисты, а также работники бухгалтерских и финансовых служб предприятий (организаций). С ее помощью можно преобразовать хранящееся в ячейке число в денежное представление: например, число 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

В отличие от функций, описание которых приведено выше, данная функция имеет два аргумента. На втором шаге в окне Аргументы функции необходимо задать область поиска (это может быть как одна ячейка, так и диапазон) и указать расположение искомого текста. Результат отображается в ячейке, которая была выделена до вызова данной функции. Важно отметить, что при поиске не учитывается регистр символов, то есть для этой функции строки слово и СлоВо одинаковы.