Конкатенация массивов

Автор Placidus, 3 августа 2016, 21:26

0 Пользователи и 1 гость просматривают эту тему.

Placidus

Всем добра!
Подскажите, пожалуйста, каким образом можно один массив добавить в конец другого? Например имеем два диапазона name1 на лист1 и name2 на лист2. Есть ли к.л. вариант создать массив name3 соединяющий в себе данные из обоих массивов? Оператор & даёт новый массив с конкатенированными данными по типу: name3[0] = name1[0]+name2[0] etc. Т.е. он просто обходит параллельно два массива и конкатенирует данные в каждой ячейке (оператор + даёт такой же эффект только данные он складывает)

JohnSUN

Ты наверняка назовёшь это очередным костылём...
{=IF(ROW()<=ROWS(name1);name1;name2)}
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Placidus

Цитата: JohnSUN от  3 августа 2016, 20:26{=IF(ROW()<=ROWS(name1);name1;name2)}
Выглядит как костыль :) Но у меня не сработало для моей задачи. Расширяю пояснение: Есть два листа с данными: индекс; ФИО. На одном листе мужчины, на другом листе женщины. На третьем листе нужно вставлять по индексу ФИО из массива как мужчин, так и женщин. Хочу сделать с помощью выпадающего списка, но там надо задавать диапазон с данными. Так не работает: женщины.А1:B100;мужчины.A1:B100. Следовательно мне нужно и мужчин и женщин объединить в один массив и скормить его в диалог создания списка.

JohnSUN

Цитата: Placidus от  3 августа 2016, 22:45
Но у меня не сработало для моей задачи.
Это, наверное, из-за неправильного применения. Предполагалось, что эта формула будет вписана в A1 вспомогательного листа и растянута на нужную высоту
Цитата: Placidus от  3 августа 2016, 22:45
Расширяю пояснение: Есть два листа с данными: индекс; ФИО. На одном листе мужчины, на другом листе женщины. На третьем листе нужно вставлять по индексу ФИО из массива как мужчин, так и женщин.
Хочу сделать с помощью выпадающего списка
Так в выпадающем списке должны быть ФИО или индексы?
Цитата: Placidus от  3 августа 2016, 22:45
там надо задавать диапазон с данными. Так не работает: женщины.А1:B100;мужчины.A1:B100. Следовательно мне нужно и мужчин и женщин объединить в один массив и скормить его в диалог создания списка.
Ну да, и формула на вспомогательном листе именно это и должна сделать.
Если же уже есть индекс и просто "нужно вставлять по индексу ФИО из массива", то формула
=IFERROR(VLOOKUP($A$2;name1;2;0);IFERROR(VLOOKUP($A$2;name2;2;0);"Не найден"))
должна с этой задачей справиться. Здесь подразумевается, что в A2 внесен какой-то индекс, в именованном диапазоне name1 лежат индексы и ФИО из женщины.А1:B100, а в name2 - мужчины.A1:B100

А вообще-то, задача как-то вывернута наоборот - почему бы не слить вместе два листа, поставив в третьей колонке признак "Пол"? Всё стало бы намного проще... А уж если бы понадобился лист только с М или только с Ж, то разделить их было бы тоже не очень сложно

И в следующий раз, пожалуйста, не скромничай - пиши задачу сразу же "как есть". Ну, попробуй перечитать первое сообщение - где там речь о выпадающих списках?
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Placidus

Цитата: JohnSUN от  4 августа 2016, 11:47
Цитата: Placidus от  3 августа 2016, 22:45
Но у меня не сработало для моей задачи.
Это, наверное, из-за неправильного применения. Предполагалось, что эта формула будет вписана в A1 вспомогательного листа и растянута на нужную высоту
Цитата: Placidus от  3 августа 2016, 22:45
Расширяю пояснение: Есть два листа с данными: индекс; ФИО. На одном листе мужчины, на другом листе женщины. На третьем листе нужно вставлять по индексу ФИО из массива как мужчин, так и женщин.
Хочу сделать с помощью выпадающего списка
Так в выпадающем списке должны быть ФИО или индексы?
Цитата: Placidus от  3 августа 2016, 22:45
там надо задавать диапазон с данными. Так не работает: женщины.А1:B100;мужчины.A1:B100. Следовательно мне нужно и мужчин и женщин объединить в один массив и скормить его в диалог создания списка.
Ну да, и формула на вспомогательном листе именно это и должна сделать.
Если же уже есть индекс и просто "нужно вставлять по индексу ФИО из массива", то формула
=IFERROR(VLOOKUP($A$2;name1;2;0);IFERROR(VLOOKUP($A$2;name2;2;0);"Не найден"))
должна с этой задачей справиться. Здесь подразумевается, что в A2 внесен какой-то индекс, в именованном диапазоне name1 лежат индексы и ФИО из женщины.А1:B100, а в name2 - мужчины.A1:B100

А вообще-то, задача как-то вывернута наоборот - почему бы не слить вместе два листа, поставив в третьей колонке признак "Пол"? Всё стало бы намного проще... А уж если бы понадобился лист только с М или только с Ж, то разделить их было бы тоже не очень сложно

И в следующий раз, пожалуйста, не скромничай - пиши задачу сразу же "как есть". Ну, попробуй перечитать первое сообщение - где там речь о выпадающих списках?
Спасибо! Конечно, можно смешать всех в один список, не хотелось добавлять лишнее поле, но скорее всего это лучший вариант.
По задаче: согласен, про выпадающие списки нет. Сначала хотел порешать "малой кровью" :) по сути объединение массивов задача тривиальная (оказалось что не в ЛО)
По индексам: сначала у меня и было так сделано как ты предлагаешь, но хочется сделать более юзерфрендли. Т.е. юзеру сначала придётся лезть на страничку со списком, искать Фамилию, запоминать индекс... меня пользователь проклянёт до третьего колена! (да не произойдёт сие зло!) Хотелось сделать красиво, чтобы пользователь выбирал Фамилию, а вставлялся индекс (пока задачу не решил). Задача в сухом "итого": Есть список людей с соответствующими атрибутами на одном листе, на другом листе этим же людям надо добавлять другие изменяемые атрибуты. (условно: лист1 список студентов, лист2 табель посещаемости. В табеле представлен не весь список студентов, т.е. их надо выбирать из листа1.)