Новости:

Теперь на форум можно залогиниться / зарегистрироваться с помощью ВКонтакте. Уже существующие пользователи могут связать свою учетную запись с аккаунтом ВКонтакте одним кликом в профиле пользователя http://forum.msexcel.ru/index.php?action=profile;area=account

Главное меню

Объединить массивы

Автор Alexxey, 10.11.2011, 20:34

« назад - далее »

Alexxey

Здравствуйте!

Диапазоны разной длины A1:A3 и B1:B2 в памяти представлены массивами {3:2:1} и {4:5}. Как формулой объединить массивы в один, т.е. получить {3:2:1:4:5} без использования вспомогательных ячеек?

Заранее спасибо за ответ!

Serge 007

Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

Alexxey

Спасибо за ответ.
Наксолько я понял, Ваш вопрос - об объединении массивов в одну строку, тогда как необходимо получить _массив_.

Serge 007

Цитата: Alexxey от 10.11.2011, 21:16
Ваш вопрос - об объединении массивов в одну строку, тогда как необходимо получить _массив_.
А Ваш? Вы просили
Цитироватьформулой объединить массивы в один, т.е. получить
одномерный (в одну строку, точнее в один столбец) массив.
По ссылке я именно об этом и спрашивал.
Вы видите какую-то разницу или я что-то недопонял?
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

Alexxey

Ваш вопрос я понял так:
Из _одного_ массива значений {"любое значение1";"любое значение2";"любое значение3"}
получить одно значение "любое значение1любое значение2любое значение3".
Тогда как мне нужно из _нескольких_ массивов получить один массив.

С.М.

Эксель изощрён, но не злонамерен.

Alexxey

Спасибо! Буду изучать.

Alexxey

Буду благодарен помощи в освоении VBA.
Не работает UDF

Public Function MyUnion(Array1, Array2) As Double()
Rem получить объединенный массив
   
    Dim N As Integer
   
    Dim Arr, ArrItem As Double
    Dim UnionArr() As Double
   
     For Each Arr In Array1
      ReDim Preserve UnionArr(0 To N)
      UnionArr(N) = Arr
      N = N + 1
     Next
     
     For Each Arr In Array2
      ReDim Preserve UnionArr(0 To N)
      UnionArr(N) = Arr
      N = N + 1
     Next

MyUnion = UnionArr
End Function

В чем проблема?

С.М.

Alexxey, у меня Ваша функция работает.
(на всякий случай добавил немного извращённый  :)  вариант):
Эксель изощрён, но не злонамерен.

MCH

Ну и формульный вариант (тоже извращенный)

Alexxey

Спасибо за помощь! Понять бы еще и формульный вариант... Буду изучать

Alexxey

Здравствуйте!
Как использовать рассматриваемые функции соединения используя ссылки на исходные объединяемые массивы?
Заранее благодарен за ответ!


С.М.

Цитата: Alexxey от 01.12.2011, 23:44
Как использовать рассматриваемые функции соединения используя ссылки на исходные объединяемые массивы?
Alexxey, в прикреплённом два макроса.
Первый - выделяет диапазон, соответствующий размеру возвращаемому функцией массиву (или (почти) любой формулы, возвращающей массив) и затем его вставляет.
Второй - удаляет формулы из ячеек диапазона-массива, кроме первой ячейки.
Эксель изощрён, но не злонамерен.

Alexxey

Спасибо Вам за помощь!
К сожалению, мой вопрос, вероятно, не достаточно четко сформулирован,
и поэтому Ваш ответ не совсем решил мой вопрос. Могли бы Вы загрузить мой модифицированный вопрос, я постарался его расписать более понятно.


С.М.

Alexxey, сорь, я невнимательно прочитал то что Вы хотите.
Так ? :
Эксель изощрён, но не злонамерен.