Превратите одну строку в несколько строк в Excel

Превратите одну строку в несколько строк в Excel

У меня есть несколько товаров, которые доступны в нескольких распределительных центрах (т.е. отношение «многие ко многим»). В настоящее время для каждого товара есть одна строка, с одним столбцом для каждого распределительного центра. Ячейка в строке для товара Икси колонна для распределительного центра Иотмечен кодом распределительного центраИесли элемент Иксдоступен там и пуст в противном случае. Элемент с несколькими распределительными центрами будет иметь несколько кодов распределительных центров (в соответствующих столбцах). Таким образом, текущий лист выглядит следующим образом:

    |   A    |         B         |*|                      S-AJ                      |
1   |  ID #  |   Description     |…|              Distribution Centers              |
2   |   17   |   Ginkgo Biloba   |…|      |      |      |      |      |      |  SE  |
3   |   42   |   Ginseng         |…|      |  MP  |  MS  |      |  NW  |      |      |

Столбцы Cпо Rсодержат другие атрибуты товаров, такие как код UPC, стоимость и цена, которые не имеют отношения к этому вопросу. Мой фактический лист содержит 18 распределительных центров, охватывающих столбцы Sпо AJ; я сократил это, чтобы пример вписался в окно Stack Exchange.

Мне нужно иметь один столбец распределительного центра с одним кодом распределения на строку, а затем дублировать строки по мере необходимости для товаров, которые в настоящее время содержат несколько кодов. Результат должен выглядеть так:

    |   A    |         B         |*|   S  |
1   |  ID #  |   Description     |…|  DC  |
2   |   17   |   Ginkgo Biloba   |…|  SE  |
3   |   42   |   Ginseng         |…|  MP  |
4   |   42   |   Ginseng         |…|  MS  |
5   |   42   |   Ginseng         |…|  NW  |

где ячейки A3:R3, A4:R4, и A5:R5, содержат одну и ту же информацию.

Единственный способ, который я могу придумать, чтобы сделать это, который займет много времени, — это скопировать номер товара в несколько строк; и в столбце с кодом дистрибуции я бы изменил код на товар, который доступен в каждом распределительном центре. Я сделаю это для 900 товаров. Есть ли более простой способ сделать это?

решение1

  1. Создайте новый лист. Скопируйте строку(и) заголовка, ширину столбцов и форматы, но не копируйте Столбцы T- AJ. Возможно, проще всего будет скопировать весь лист, затем удалить все строки, кроме 1, и разъединить Столбцы S- AJ.
  2. Сначала мы хотим повторить каждую строку элемента из Sheet1на Sheet2 18 раз — один раз для каждого распределительного центра. Введите =INDEX(Sheet1!A:A, INT((ROW()-2)/18)+2, 1) & "". Sheet2!A2сопоставляет  INT((ROW()-2)/18)+2строки 2-19 на Sheet2строку 2 на Sheet1, строки 20-37 на Sheet2строку 3 на Sheet1и т. д. Это & ""заставляет Excel отображать пробел при ссылке на пустую ячейку в Sheet1. Если у вас нет пробелов в Sheet1, вы можете не делать этого. Если вам не нравится это конкретное решение, вы можете использовать одно из других решений из Отображать пустое значение при ссылке на пустую ячейку в Excel.

    Перетащите/заполните это вправо, в ячейку R2.

  3. Введите =INDEX(Sheet1!$S:$AJ, INT((ROW()-2)/18)+2, MOD(ROW()-2, 18)+1) в Sheet2!S2. Это ссылается на ту же строку в , Sheet1что и приведенная выше формула, но Sheet2!S2получает значение из Sheet1!S2, Sheet2!S3получает значение из Sheet1!T2, Sheet2!S4получает значение из Sheet1!U2и т. д. Это отобразит 0s для пробелов.
  4. Выберите всю строку A2:S2и перетащите/заполните вниз, чтобы получить все ваши данные. Это должно быть в 18 раз больше строк, чем у вас есть на Sheet1; т. е. 18×900=16200.
  5. Скопируйте все Sheet2и вставьте значения.
  6. Фильтр столбца S. Отобразить только нули. Удалить все строки (кроме строки 1). Удалить фильтр.

Сделанный.

решение2

Более простое решение, но больше ручных усилий: скопируйте уникальные идентификаторы x количество времени (где x — количество столбцов, которые нужно преобразовать в строки) для каждой итерации, применяйте ВПР к столбцу, который нужно преобразовать в строки каждый раз.

Связанный контент