У меня есть два списка продуктов в Excel. Каждый список будет разной длины каждый месяц.
Есть ли способ объединить два списка в третий список, чтобы второй список находился под первым?
Я хотел бы сделать это, избегая макросов.
Я представляю, что это можно сделать с помощью динамических массивов, но я не могу этого понять.
См. пример ниже:
Огромное спасибо заранее.
У меня была эта проблема раньше, и я использовал этот учебник, чтобы помочь мне. Я также прикрепляю лист с примерами, в котором представлена формула, которая может подойти для вашей проблемы.
См. изображение ниже для ссылок на ячейки — затем попробуйте следующее:
=ЕСЛИОШИБКА(ИНДЕКС($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)), "")))
Мне удалось найти решение, которое работает для меня, где списки имеют переменную длину.
Используя сценарий, аналогичный ответу Марди-Луизы, я использую следующую формулу в ячейке F3, а затем перетаскиваю вниз:
=ЕСЛИ(B3<>"",B3,СМЕЩЕНИЕ($D$3,СТРОКА()-СЧЁТ($B$3:$B$7),0))
Объяснение:
Я воспользовался ответом 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;...)
С массивами в качестве столбцов в таблицах вы получите динамическую длину. Также можно комбинировать vstack()
, например, с unique()
.
Большое спасибо за Ваш ответ. Это действительно хорошее решение. Однако в моем конкретном случае длина исходных списков неизвестна. Я не уверен, как настроить эти формулы для такого случая.