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