Hi Onn,
The 'Dynamic Arrays' feature that has been added to Excel 365 versions is exactly what you are looking for.
In these versions, if MyFunc(2) returns an array, the result will spill into the adjacent cells.
MyFunc can also be an RTD wrapper, and everything works fine.
In older versions of Excel, before the 'Dynamic Arrays' support, you are in for various clumsy workarounds.
If you know the size of the result region, you can pre-select the cells A1,B1,C1 and enter the formula as an 'array formula' using the Ctrl+Shift+Enter keystroke.
The result will then cover the selected cells and the formula will be displayed with braces as "={MyFunc(2)}".
That's more tricky for the user, but you get the array result into the sheet.
However, if the function wraps an RTD call, there are some problems with array formulas with a memory leak in Excel where the internal RTD calls are not done right.
There is also a hack where you automatically run a macro to expand the formula to an array formula of the right size, but that doesn't work with RTD at all.
Before the 'Dynamic Arrays' era, I normally suggested restructuring such a case into a single-cell RTD call that returns a handle of some sort to an internal data structure, and then an array formula which takes the handle and returns as a non-RTD function the result array. This is also a bit clumsy to use on the sheet, but at least can be made reliable.
-Govert