Service M Forum
Воскресенье, 11.12.2016, 07:13
START-SM МИГРАЦИЯ ENGLISH INSURANCE ЗАРАБОТОК X1-MSB МАГАЗИН ФОРУМ АЗАРТ INFO-СТОК $ RUSBUX $
ФОРУМ САЙТА START-SM.AT.UA
Регистрация Новые сообщения Правила форума Участники Поиск ВХОД RSS
Страница 1 из 11
Форум » EDUCATION » Excel VBA » User Defined Functions (VBA For Excel Functions)
User Defined Functions
start-sm Дата: Суббота, 26.05.2012, 20:59 | Сообщение # 1
Admin
Administrator
Posts: 574
Reputation: 3
Status: Offline
* Как создать свою функцию для Excel, например =ScaleNumber(A1)

Пример:

Function ScaleNumber(number As Double) As String

If Abs(number) < 1000000 Then

ScaleNumber = CStr(Round(number / 1000, 3)) & "K"

Else

ScaleNumber = ScaleMegaNumber(number)

End If

End Function

' ______________________________________________________

Function ScaleMegaNumber(number As Double) As String

ScaleMegaNumber = CStr(Round(number / 1000000, 2)) + "M"

End Function


Пояснение (построчно):

1. Создаем строкового типа функцию с условным названием ScaleNumber с параметром вещественного типа number
2. Проверяем если If абсолютное значение Abs числа (параметра number), которое мы будем брать в Excel из какой-либо клетки, меньше миллиона, тогда Then ...
3. Определяем теперь саму функцию для этого случая. Обратите внимание, что название функции и название переменной, которая у нас будет левой частью уравнения функции, одинаковые - ScaleNumber. Итак, результат функции, которая имеет у нас строковый тип (см. выше) равен приведенному к строковому типу способом CStr значению параметра number, разделённому на 1000 и округлённому с помощью Round до 3 знаков после запятой с добавлением с помощью знака & буквы К на конце.
4. Иначе (т.е. если число окажется больше миллиона)
5. Значению функции ScaleNumber присвоить значение другой функции - ScaleMegaNumber с тем же параметром number. Другими словами, мы вызываем дополнительную функцию из основной функции. Соответственно, машина, взяв значение параметра number, которое больше миллиона, перейдёт к вычислению функции ScaleMegaNumber.
6. Закрываем Если (End If)
7. Закрываем функцию (End Function)
---------------------------------------------
1. Открываем функцию ScaleMegaNumber, которая такая же по сути, как и функция ScaleNumber
2. Делаем вычисления аналогичные п.3 предыдущей функции. Только теперь делим число на миллион и добавляем букву М в конце.
3. Закрываем функцию. Машина же при этом с полученным результатом этой функции вернется в строку 5 предыдущей функции.


Скачать файл образец: DOWNLOAD

Обратите внимание:

В колонке "В" в файле-примере показано как можно использовать вышеописанное преобразования числа с помощью стандартного определения функций для клеток в Excel: =ТЕКСТ(A2 / 1000; "General") & "K"

В колонке D показана нами (пользователем) придуманная (определённая) функция - User Defined Function - =ScaleNumber(A2)
 
Форум » EDUCATION » Excel VBA » User Defined Functions (VBA For Excel Functions)
Страница 1 из 11
Поиск:

    Copyright MyCorp © 2016 Бесплатный конструктор сайтов - uCoz