2014-09-08 3 views
2

Я просмотрел много потоков о XLL и массивах здесь, так что я больше смущен, чем когда-либо. Извините, если следующее полностью noob, но вот почему я здесь ...Может ли XLL возвращать массивы произвольного размера из формулы одной ячейки?

Мне сказали, что невозможно написать функцию XLL, которая может возвращать произвольные массивы данных. Вы можете возвращать массивы из своего кода, но их нужно вызывать из формулы массива (CSE). Это означает, что размер обратного пространства должен быть предварительно определен.

В нашем случае функция возвращает N строк (и/или столбцов) данных, и мы заранее не знаем, сколько их будет. В идеале мы просто поместили бы одну формулу в одну ячейку и использовали бы столько клеток влево и вниз по мере необходимости.

Примеры кода, которые я нашел здесь, не рекомендуют ни один или другой, но это кажется, как XLOPER12 (и, возможно, XLOPER) не имеют ограничений на возвращаемый размер. Предоставляет ли Excel ограничение после его возврата?

ответ

3

XLL UDF (также VBA UDF) или может возвращать массив с переменным размером, но Excel будет присваивать результат (ы) только ячейкам (ям), в которые вводится UDF. Для обработки неизвестного количества результатов, вы можете:

ввести UDF в максимальное количество ячеек, которые будут необходимы

или вернуть дескриптор внутреннего массива и построить другие пользовательские функции, которые могут интерпретировать ручки

или построить Resizer платформу: см
http://colinlegg.wordpress.com/2014/08/25/self-extending-udfs-part-1/
https://groups.google.com/forum/#!topic/exceldna/oBKpr0BCgmU

+0

Захватывающий и странно, что он должен быть. Мне интересен второй вариант, который вы упомянули - может ли это быть обертывание функции, возвращающей массив, чтобы у пользователя все еще была одна запись? Или это должна быть одна функция, вызывающая другое место в листе? –

+0

Зависит от того, как вы пишете код для хранения массивов внутри. –