2

У меня есть список родительских SKU для предметов, которые мне нужно создать в моей системе инвентаризации. Этот список был точно спарен с 165 продуктами, которые мы хотели бы нести. Однако каждый из этих 165 SKU имеет от 2 до 8 дочерних SKU разных цветов, размеров и т.д. Они хранятся на разных рабочих листах, смешанных примерно в 2500 наименований. Это артикулы, которые мне нужно ввести в мою систему инвентаризации.

Вот как это выглядит.

Лист 1 - это просто SKU:

A
1
2
3
4

Лист 2 состоит из всех дочерних SKU, с родительскими SKU в столбце B. Не у всех родителей одинаковое количество детей:

  A        B
1BLKM      1
1BLKL      1
1BLUM      1
2BLKM      2
2BLKL      2
2BLUM      2
2ORAM      2
3BLKM      3
3BLUM      3

Я хочу найти все дочерние SKU для списка родительских SKU, который был точно настроен. SKU родительского элемента включен в виде столбца на листе SKU дочернего элемента. Мне нужно просмотреть все совпадения родительского SKU, а затем продолжать перемещаться вниз по списку родительского SKU, пока не будут найдены все совпадения для всех 165 родительских элементов.

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

2 ответа2

0

Вот решение без массивов. На основе вашего макета листа 2, где все данные отсортированы по столбцу B, так что, как элементы перечислены вместе, эта небольшая формула поможет. Введите первую формулу в B1, затем скопируйте вниз и вправо, насколько это необходимо.

=IF(COUNTIF(Sheet2!$B:$B, $A1)<COLUMN(A1), "", INDEX(Sheet2!$A:$A, MATCH($A1, Sheet2!$B:$B, 0)+(COLUMN(A1)-1)))

0

Чтобы получить все соответствующие дочерние SKU в одном столбце, вы можете использовать следующую формулу массива в строке 1 столбца и заполнять ее по мере необходимости.

=IFERROR(INDEX(Sheet2!$A$1:$A$11,SMALL(IF(ISERROR(MATCH(Sheet2!$B$1:$B$11,Sheet1!$A$1:$A$5,0)),2000000,ROW(Sheet2!$B$1:$B$11)),ROW())),"")

Чтобы сделать это формулой массива, вы должны ввести ее, нажав Ctrl+Shift+Enter.

Это второй вопрос, на который я ответил сегодня с помощью такой формулы, поэтому я просто сошлюсь на свой другой ответ для объяснения того, как эта формула работает (см. Раздел РЕДАКТИРОВАНИЕ ).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .