Для удобства работы рекомендуется привязать макрос ComCalculator к кнопке и поместить ее в какое-либо место интерфейса. После вызова макроса откроется диалоговое окно Расчет комиссионного вознаграждения (название окна и его элементов можно корректировать путем внесения соответствующих изменений в код макроса), гдев поле Сумма реализации следует с клавиатуры ввести сумму, от которой требуется рассчитать объем комиссионного вознаграждения, и нажать кнопку ОК либо клавишу Enter. Результат расчета отобразится в открывшемся информационном окне – в нем будет показана сумма реализации (введенная пользователем) и сумма причитающегося комиссионного вознаграждения. В этом же окне будет сформирован запрос о продолжении расчета либо в выходе из данного режима. При положительном ответе вновь отобразится окно Расчет комиссионного вознаграждения, в котором нужно будет ввести сумму реализации, и т. д.
В данном примере макрос ComCalculator рассчитывает комиссионное вознаграждение без учета выслуги лет сотрудников компании. Для учета выслуги лет следует внести соответствующие изменения в код макроса.
Подсчет количества ячеек, содержащих указанные значения
В процессе работы иногда возникает необходимость быстро узнать, какое количество ячеек с указанным значением содержится в том или ином диапазоне. Это бывает нужно, например, чтобы узнать, сколько раз торговая выручка превышала определенную сумму либо находилась в пределах некоторого интервала сумм. Решить эту задачу поможет функция, код которой приведен в листинге 2.56.
Листинг 2.56. Количество ячеек с определенным значением
Function dhCount(rgn As Range, LowBound As Double, _
UpperBound As Double) As Long
Dim cell As Range
Dim lngCount As Long
' Проходим по всем ячейкам диапазона rgn и подсчитываем значения, _
попадающие в интервал от LowBound до UpperBound
For Each cell In rgn
If cell.Value >= LowBound And cell.Value <= UpperBound
Then
' Значение попадает в заданный интервал
lngCount = lngCount + 1
End If
Next
dhCount = lngCount
End Function
Данная функция содержит три аргумента. Если выбрать ее в окне Мастер функций, то откроется окно, показанное на рис. 2.8.
Рис. 2.8. Аргументы функции dhCount
Разработка и применение полезных пользовательских функций
В данном окне в поле Rgn указывается диапазон, содержимое которого нужно проанализировать, а в полях LowBound и UpperBound – границы значений искомых ячеек диапазона. Например, на рис. 2.8 указано, что необходимо найти общее количество ячеек диапазона B5:F12, значения которых находятся в пределах от 900 до 7000. Результат будет выведен в ячейке, в которой расположен курсор. Если вводить функцию с клавиатуры в строку формул либо в ячейку, то она будет выглядеть следующим образом: =dhCount (B5:F12; 900; 7000).
Подсчет количества видимых ячеек в диапазоне
Как известно, в Excel предусмотрена возможность скрытия строк и столбцов. Поэтому иногда в процессе работы может возникать вопрос: а есть ли в том или ином диапазоне скрытые ячейки? В данном подразделе мы рассмотрим прием, который позволяет быстро посчитать количество видимых ячеек в указанном диапазоне (сравнив его с общим количеством ячеек этого же диапазона, легко определить, есть ли в нем скрытые ячейки).
Для подсчета видимых непустых ячеек диапазона удобно применять пользовательскую функцию dhCountVisibleCells. Для создания данной функции нужно в стандартном модуле редактора VBA написать код, представленный в листинге 2.57.
Листинг 2.57. Подсчет количества видимых ячеек
Function dhCountVisibleCells(rgRange As Range)
Dim lngCount As Long
Dim cell As Range
' Проходим по всему диапазону и подсчитываем непустые _
видимые ячейки
For Each cell In rgRange
' Проверка, есть ли данные в ячейке
If Not IsEmpty(cell) Then
' Проверка, видима ли ячейка
If Not cell.EntireRow.Hidden And Not _
cell.EntireColumn.Hidden Then
' Еще одна видимая ячейка
lngCount = lngCount + 1
End If
End If
Next cell
dhCountVisibleCells = lngCount
End Function
Данная функция имеет один аргумент – диапазон, в котором нужно посчитать видимые ячейки. Результат расчета будет помещен в ячейку, в которой установлен курсор. Функцию можно использовать с помощью формулы, которая записывается в строке формул. Пример такой формулы (в ней может изменяться только анализируемый диапазон) следующий:
=dhCountVisibleCells(A1:Е7)
В данном случае будет подсчитано и помещено в активную ячейку количество видимых ячеек, которые находятся в диапазоне А1:Е7.
Читать дальше
Конец ознакомительного отрывка
Купить книгу