Из таблицы функции могут возвращать только значения (и некоторые другие вещи). То есть они могут изменять только свойство Value диапазона, из которого они вызваны. Они не могут изменять любое другое свойство этого Диапазона, любое свойство любого другого Диапазона или любое свойство объектов Рабочего листа, Рабочей книги или Приложения.
Вы можете использовать событие изменения, чтобы определить, когда вводится эта формула, например:
Function doStuff(ByRef rInput As Range) As Long
doStuff = rInput.Columns.Count
End Function
И в модуле класса рабочего листа
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.HasFormula Then
If LCase(Target.Formula) Like "=dostuff(*" Then
Target.Cells(1, Target.DirectPrecedents(1).Value).Offset(0, 2).Value = "do stuff"
End If
End If
End Sub
Я не уверен, что эта логика верна, потому что я не мог понять, где вы хотели написать текст, но я уверен, что вы можете понять эту часть.