Посмотрим, как делать собственные функции в дополнение к встроенным в Excel.
Предположим, у нас есть таблица с двумя столбиками с парами взаимосвязанных параметров. Понаблюдали мы раз десять за чем там надо наблюдать, записали результаты, увидели, что зависимость линейная, и стало нам лень остальные двести измерений делать. Первый столбик мы заполним от балды, введем какой-нибудь коэффициент, а для второго значения напишем функцию.
Примерно такую:
' Очень-очень хитрая функция
' аргументы:
' myValue - значение (целое)
' coefficient - коэффициент (вещественное)
' функция возвращает значение типа variant для того,
' чтобы мы могли запихать туда сообщение об ошибке
Function Falshivka(myValue As Integer, _
coefficient As Double) As Variant
' вводим переменную для промежуточных расчетов
Dim Res As Double
' сердце и мотор функции - вычисление
Res = myValue * coefficient
' а теперь разбодяжим слишком правильный результат.
' инициализируем генератор случайных чисел
Randomize
' и используем его (функция rnd вернет случайное
' число от 0 до 1)
' таким образом мы получим некоторой разброс
' вокруг вычисленного значения
Res = Res + (Rnd - 0.5) * (Res * 0.3)
' для интереса предположим, что при исходном
' значении больше нуля, результат тоже обязан
' быть положительным и ненулевым. Проверим это
If myValue > 0 And (Res < 0 Or Res = 0) Then
' ай, не повезло! придется выводить сообщение
' об ошибке, да текстовое,
' чтобы заметно было, а потом - ручками, ручками...
Falshivka = "-= 0 =-"
Else
' все. Присваиваем функции правильный результат.
' Просто пишем имя нашей функции, знак «равно» и то,
' что она должна вернуть.
Falshivka = Res
End If
End Function
Помните, что случайные значения Rnd вовсе не случайны! Было время, я наблюдал повторяющиеся последовательности среди чисел, что она выдает.
Вот так ненавязчиво можно обмануть доверившихся вам людей. Не делайте этого! Такой примитивный и безграмотный обман быстро откроется. Зато мы создали собственную функцию, ничем не хуже встроенной. Теперь в любой ячейке можно вбить «=falshivka()», и в скобках подставить ссылки на ячейки с нужными данными.
Не палите меня, ладно?
Также читайте всю серию постов по VBA.
ай-ай-ай…
тс-с-с-с!