Если вам нужна пользовательская функция, которая возвращает более одного значения, попробуйте использовать функцию массива.
Функция массива вводится путем выбора диапазона ячеек на листе, ввода функции и нажатия Ctrl-Shift-Enter. Результат - введенная вами функция в каждой из выбранных ячеек, обернутая в {}
Ваша пользовательская функция должна затем вернуть массив значений.
Например
Function MyArrayFunction(r As Range) As Variant
Dim cl As Range
Dim i As Long, j As Long
Dim v() As Variant
ReDim v(1 To Application.Caller.Rows.Count, 1 To Application.Caller.Columns.Count)
For i = 1 To UBound(v, 1)
For j = 1 To UBound(v, 2)
v(i, j) = i * j + r.Value
Next
Next
MyArrayFunction = v
Функция завершения
Чтобы использовать, выберите диапазон, скажем, A1: B4, введите =MyArrayFunction(D1)
, нажмите Ctrl-Shift-Enter
если D1 содержит 0, результатом будет A1 = 1, B1 = 2, A2 = 2, B2 = 4, A3 = 3, B3 = 6, A4 = 4, B4 = 8