2015-10-29 4 views
0

Мне просто интересно, как я могу добавить два 2D-массива с помощью VBA в Excel.Добавление двух 2D-массивов в Excel VBA

Я попытался выполнить поиск в Интернете, и мне кажется, что единственный способ - это цикл на каждом элементе. Я прав, или есть лучший/более быстрый метод?

В качестве следственного вопроса: было бы лучше скомпилировать или скопировать в Range и использовать опции PasteSpecial, как в духе ответа на вопрос how to add arrays?

+0

Зависит от того, что представляют собой элементы данных, насколько массив будет взаимодействовать с рабочим листом и т. Д. Вы даже указываете на пример, отвечая на ваш вопрос. Все, что мы говорим, будет основываться на общих мнениях. Сначала изучите свой собственный вопрос для решения, и придите сюда с дополнительным запросом о том, где ваше собственное решение терпит неудачу. –

+0

Элементы массивов являются целыми числами и массивы не нуждаются в взаимодействии с рабочим листом. Я попытаюсь объяснить дух моего вопроса, используя другой пример. Если я хочу разрезать столбец из 2D-массива, я могу создать цикл для извлечения этих элементов, или я могу использовать функцию «WorksheetFunction.Index», чтобы сделать то же самое. Этот второй выбор для меня проще и быстрее, чем я могу кодировать. Аналогично, я мог бы переписать свой вопрос следующим образом: «Существует ли стандартная или встроенная альтернатива циклу для добавления 2 массивов в VBA?» – MeSS83

+0

Цикл будет быстрее, и вы можете запрограммировать его как многократно используемую автономную функцию утилиты. –

ответ

1

You можно попробовать следующий метод WorksheetFunction добавить две вариантные массивы VBA:

Function ArrayAdd(A, B) 
    ArrayAdd = Application.Pmt(, -1, A, B) 
End Function 

A и B могут быть массивами, диапазоны или значения. (https://stackoverflow.com/a/25596621/1252820)

+0

Спасибо @lori_m, это было именно то, что я искал – MeSS83

0

Поскольку существует значительная неопределенность относительно «добавления массивов», предполагая, каждый состоит только из цифр и 3x3 в A1: C3 и A6: A8, то для вывода J1: L3, пожалуйста, попробуйте:

Sub ArraySum() 
Range("J1:L3").FormulaArray = "=RC[-9]:R[2]C[-7]+R[5]C[-9]:R[7]C[-7]" 
End Sub 
Смежные вопросы