Алексей Алексеевич Громаковский - Excel. Трюки и эффекты стр 27.

Шрифт
Фон

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

' Просмотр всех ячеек заданного диапазона

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).

Листинг 2.51. Функция Сумма

Function Сумма(Диапазон, АдресЯчейки) As Double

' Просмотр всех ячеек диапазона

For Each Ячейка In Диапазон

' Проверка, чтобы в суммировании не участвовала _

ячейка с формулой

If АдресЯчейки.Address <> Ячейка.Address Then

' В суммировании участвуют только ячейки _

с численными значениями

If IsNumeric(Ячейка) = True Then

Сумма = Сумма + Ячейка

End If

End If

Next

End Function

После выбора функции необходимо задать два обязательных условия: диапазон суммируемых ячеек и адрес ячейки, в которой будет располагаться функция (и отображаться результат расчета).

Начисление процентов в зависимости от суммы

Процесс начисления комиссионных процентов – один из наиболее популярных процессов в экономической и финансовой деятельности, поэтому любой экономист, менеджер и финансовый работник должен уметь быстро выполнять эту операцию. Функция, которая рассматривается в данном подразделе, поможет решить эту задачу.

Допустим, что организация принимает вклады на следующих условиях: на вклады размером до 4999 руб. начисляется 9 %, на вклады размером от 5000 до 9999 руб. – 11 %, а на вклады размером свыше 10 000 руб. – 15 % (все данные условны). Чтобы быстро рассчитать проценты по вкладам в данном случае, можно воспользоваться функцией dhCalculatePercent, код которой приведен в листинге 2.52.

Листинг 2.52. Функция dhCalculatePercent (вариант 1)

Function dhCalculatePercent(lngSum As Long) As Double

' Процентные ставки (декларация констант)

Const dblRate1 As Double = 0.09

Const dblRate2 As Double = 0.11

Const dblRate3 As Double = 0.15

' Граничные суммы вкладов (декларация констант)

Const intSum1 As Long = 5000

Const intSum2 As Long = 10000

' Возвращаем сумму, умноженную на соответствующую ставку

If lngSum < intSum1 Then

dhCalculatePercent = lngSum * dblRate1

ElseIf lngSum < intSum2 Then

dhCalculatePercent = lngSum * dblRate2

Else

dhCalculatePercent = lngSum * dblRate3

End If

End Function

Эту же функцию можно записать и в таком виде (листинг 2.53).

Листинг 2.53. Функция dhCalculatePercent (вариант 2)

Function dhCalculatePercent(lngSum As Long) As Double

' Процентные ставки (декларация констант)

Const dblRate1 As Double = 0.09

Const dblRate2 As Double = 0.11

Const dblRate3 As Double = 0.15

' Граничные суммы вкладов (декларация констант)

Const intSum1 As Long = 5000

Const intSum2 As Long = 10000

' Возвращаем сумму, умноженную на соответствующую ставку

Select Case lngSum

Case Is < intSum1

dhCalculatePercent = lngSum * dblRate1

Case Is < intSum2

dhCalculatePercent = lngSum * dblRate2

Case Else

dhCalculatePercent = lngSum * dblRate3

End Select

End Function

После выбора функции (в окне Мастер функций данная функция по умолчанию будет помещена в категорию Определенные пользователем, как и другие пользовательские функции) необходимо указать ячейку, на основании которой следует рассчитать сумму процентов. Результат отобразится в ячейке, в которой был установлен курсор.

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

Еще о расчете процентов

Выше мы рассмотрели один из наиболее простых способов расчета процентов в зависимости от суммы вклада (выручки и т. п.). Рассмотрим другой вариант. Предположим, что штатным сотрудникам организации, принимающей вклады, проценты по вкладам начисляются по приведенному в предыдущем подразделе алгоритму. Сторонним же вкладчикам выплачивается 110 % от начисленной суммы. Для решения данной задачи функцию dhCalculatePercent следует написать в таком виде (листинг 2.54).

Листинг 2.54. Функция dhCalculatePercent (вариант 3)

Function dhCalculatePercent(Sales As Long, IsTemporal As Boolean)

As Double

' Процентные ставки (декларация констант)

Const dblRate1 As Double = 0.09

Const dblRate2 As Double = 0.11

Const dblRate3 As Double = 0.15

Const dblAdd As Double = 1.1

' Граничные суммы

Const lngSum1 As Long = 5000

Const lngSum2 As Long = 10000

' Рассчет суммы для выплаты (как обычно)

If Sales < lngSum1 Then

dhCalculatePercent = Sales * dblRate1

ElseIf Sales < lngSum2 Then

dhCalculatePercent = Sales * dblRate2

Else

dhCalculatePercent = Sales * dblRate3

End If

If IsTemporal Then

' Для сторонних вкладчиков – надбавка

dhCalculatePercent = dblAdd * dhCalculatePercent

End If

End Function

Теперь функция dhCalculatePercent будет иметь два аргумента. После выбора в окне Мастер функций данной функции откроется окно, показанное на рис. 2.7.

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке