Объедините два списка в Excel, один под другим

У меня есть два списка продуктов в Excel. Каждый список будет разной длины каждый месяц.

Есть ли способ объединить два списка в третий список, чтобы второй список находился под первым?

Я хотел бы сделать это, избегая макросов.

Я представляю, что это можно сделать с помощью динамических массивов, но я не могу этого понять.

См. пример ниже:

Огромное спасибо заранее.

Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
0
11 500
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

У меня была эта проблема раньше, и я использовал этот учебник, чтобы помочь мне. Я также прикрепляю лист с примерами, в котором представлена ​​формула, которая может подойти для вашей проблемы.

См. изображение ниже для ссылок на ячейки — затем попробуйте следующее:

=ЕСЛИОШИБКА(ИНДЕКС($B$3:$B$7, СТРОКИ(H2:$H$2)), ЕСЛИОШИБКА(ИНДЕКС($D$3:$D$4, СТРОКИ(H2:$H$2)-СТРОКИ($B$3: $B$7)), ЕСЛИОШИБКА(ИНДЕКС($F$3:$F$6, СТРОКИ(H2:$H$2)-СТРОКИ($B$3:$B$7)-СТРОКИ($D$3:$D$4)), "")))

Большое спасибо за Ваш ответ. Это действительно хорошее решение. Однако в моем конкретном случае длина исходных списков неизвестна. Я не уверен, как настроить эти формулы для такого случая.

Dani Freidus 11.12.2020 13:31
Ответ принят как подходящий

Мне удалось найти решение, которое работает для меня, где списки имеют переменную длину.

Используя сценарий, аналогичный ответу Марди-Луизы, я использую следующую формулу в ячейке F3, а затем перетаскиваю вниз:

=ЕСЛИ(B3<>"",B3,СМЕЩЕНИЕ($D$3,СТРОКА()-СЧЁТ($B$3:$B$7),0))

Объяснение:

  • Пока список 1 не завершен, он берет значение из списка 1.
  • Как только список 1 закончен, он начинается в верхней части списка 2 и использует смещение для перемещения вниз.

Я воспользовался ответом 2 с немного другим синтаксисом. Функция ROW() обеспечивает вывод, основанный на абсолютном адресе ячейки, в то время как вывод, основанный на относительном положении списка, на самом деле более применим. Я обнаружил, что следующий синтаксис лучше работает для ссылки на вывод ROW() на ячейку над верхней ячейкой диапазона D3: D8:

=IF(B3<>"",B3,OFFSET($D$2,ROW()-ROW($D$2)-COUNTA($B$3:$B$7),0))

Кроме того, функция COUNTA может давать противоречивые результаты, когда ячейки в диапазоне основаны не на простых данных, а на выводе формул, которые могут быть равны 0 или пустыми, но на самом деле не пустыми. В этом случае COUNTIF часто работает лучше, например:

=IF(B3<>"",B3,OFFSET($D$2,ROW()-ROW($D$2)-COUNTIF($B$3:$B$7,"<>"&0),0))

Я опаздываю на вечеринку, но для тех, кто все еще ищет это, есть (сейчас) функция для этого в Excel 365: vstack(array1;array2;...)

Вот страница Microsoft на нем

С массивами в качестве столбцов в таблицах вы получите динамическую длину. Также можно комбинировать vstack(), например, с unique().

Другие вопросы по теме