2011-10-13 8 views
3

В Excel есть встроенная формула/функция для добавления или добавления значения в массив? Поэтому предположим, что у меня есть собственный UDF, MyFunc (...), который возвращает массив значений. Могу ли я добавить или преподнести одно значение этому результату, используя ссылку на одну ячейку?Добавить или добавить к массиву без VBA/UDF

+0

AFAIK, никакая формула не может это сделать, и нет функции 'append' в VBA. Тем не менее, вы можете использовать функцию «ConcatenateArrays» из [Chris Pearson] (http://www.cpearson.com/excel/vbaarrays.htm) – JMax

+0

JMax - спасибо за указатель! Я посмотрел на ConcatenateArrays и его то, что я хочу выполнить (мне просто нужно обернуть эту функцию своей собственной функцией, которая возвращает результирующий массив, а не boolean true/false). Не могли бы вы опубликовать это как ответ, чтобы я мог дать вам кредит? – SFun28

+1

Если это единственное значение, почему вы просто не делаете Redim Сохраните массив с еще одним элементом, а затем добавьте его, а не запустите ConcatenateArrays? – brettdj

ответ

2

Как мы уже говорили в комментариях, вот возможный ответ:

AFAIK, никакой формулы не может это сделать, и нет никакой функции Append в VBA. Тем не менее, вы можете использовать функцию ConcatenateArrays от Chip Pearson

2

Этого можно достичь с помощью стандартных функций массива Excel.

Для иллюстрации предположим MyFunc является

Function MyFunc(r As Range) As Variant 
    MyFunc = r.Value 
End Function 

Где пропущенный диапазон больше, чем одна клетка, это возвращает двумерный массив.

Когда вводится как формула массива, как =D1&MyFunc(A2:C7)&E1 это присоединяет D1 и присоединяет Е1

Оно также может быть использовано в стандартной формуле не-массив, где ожидается параметр массива, как показано в ячейке D12 ниже

enter image description here

+0

Хороший! Это также напоминает мне об этой статье (от Чипа Пирсона снова) (http://www.cpearson.com/excel/ReturningArraysFromVBA.aspx), где он объясняет, как вернуть и использовать массив из UDF – JMax

+0

Крис - я попробовал следующее: = SUM ({1,2,3,4}) и, конечно, возвращает 10. Однако = SUM ({1,2,3,4} & A1), где A1 - числовые значения 0. Это случай, независимо от того, введена ли формула в виде формулы массива. Мысли? – SFun28

+0

Крис - Я думаю, вы предлагаете конкатенацию строк для каждого элемента массива вместо добавления одного элемента во весь массив? – SFun28

 Смежные вопросы

  • Нет связанных вопросов^_^