Wandeln Sie eine Zeile in Excel in mehrere Zeilen um

Wandeln Sie eine Zeile in Excel in mehrere Zeilen um

Ich habe mehrere Artikel, die in mehreren Distributionszentren verfügbar sind (d. h. eine Viele-zu-viele-Beziehung). Derzeit gibt es eine Zeile pro Artikel und eine Spalte für jedes Distributionszentrum. Eine Zelle in der Zeile für den Artikel Xund die Spalte für das Verteilzentrum Yist mit dem Code für Verteilzentrum gekennzeichnetYwenn Artikel Xist dort verfügbar und ansonsten leer. Ein Artikel mit mehreren Vertriebszentren hat mehrere Vertriebszentrumscodes (in den jeweiligen Spalten). Das aktuelle Blatt sieht also folgendermaßen aus:

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

Die Spalten Cbis Renthalten andere Attribute der Artikel, wie UPC-Code, Kosten und Preis, die für diese Frage nicht relevant sind. Mein aktuelles Blatt enthält 18 Vertriebszentren, die sich Süber die Spalten bis erstrecken AJ. Ich habe das verkleinert, damit das Beispiel in das Fenster von Stack Exchange passt.

Ich brauche eine einzelne Spalte für das Distributionszentrum mit einem einzelnen Distributionscode pro Zeile und muss dann die Zeilen nach Bedarf für Artikel duplizieren, die derzeit mehrere Codes enthalten. Das Ergebnis sollte folgendermaßen aussehen:

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

wobei die Zellen A3:R3, A4:R4, und A5:R5, dieselben Informationen enthalten.

Die einzige Möglichkeit, die mir dazu einfällt, die aber zeitaufwändig wäre, wäre, die Artikelnummer in mehrere Zeilen zu kopieren und in der Spalte mit dem Vertriebscode den Code für den Artikel zu ändern, der in jedem Vertriebszentrum verfügbar ist. Ich werde dies für 900 Artikel tun. Gibt es eine einfachere Möglichkeit, dies zu tun?

Antwort1

  1. Erstellen Sie ein neues Blatt. Kopieren Sie die Kopfzeile(n), die Spaltenbreiten und die Formate, kopieren Sie jedoch nicht „Spalten T-“ . Am einfachsten ist es vielleicht, das gesamte Blatt zu kopieren, dann alle Zeilen außer 1 zu löschen und die Spalten - AJaufzuheben .SAJ
  2. Zuerst wollen wir jede Artikelzeile von Sheet1auf Sheet2 18 Mal replizieren – einmal für jedes Vertriebszentrum. Geben Sie =INDEX(Sheet1!A:A, INT((ROW()-2)/18)+2, 1) & ""ein Sheet2!A2INT((ROW()-2)/18)+2ordnet die Zeilen 2-19 auf Sheet2Zeile 2 auf zu Sheet1, die Zeilen 20-37 auf Sheet2Zeile 3 auf Sheet1usw. Dies & ""führt dazu, dass Excel ein Leerzeichen anzeigt, wenn auf eine leere Zelle in verwiesen wird Sheet1. Wenn Sie keine Leerzeichen in haben Sheet1, können Sie dies weglassen. Wenn Ihnen diese spezielle Lösung nicht gefällt, können Sie eine der anderen Lösungen von verwenden. Leer anzeigen, wenn auf eine leere Zelle in Excel verwiesen wird.

    Ziehen/füllen Sie dies nach rechts zur Zelle R2.

  3. Geben Sie =INDEX(Sheet1!$S:$AJ, INT((ROW()-2)/18)+2, MOD(ROW()-2, 18)+1) in ein Sheet2!S2. Dies verweist auf dieselbe Zeile in Sheet1wie die obige Formel, Sheet2!S2ruft jedoch den Wert aus ab Sheet1!S2, Sheet2!S3ruft den Wert aus ab Sheet1!T2, Sheet2!S4ruft den Wert aus ab Sheet1!U2usw. Dadurch werden 0s für Leerzeichen angezeigt.
  4. Wählen Sie die gesamte Zeile aus A2:S2und ziehen/füllen Sie sie nach unten, um alle Ihre Daten zu erhalten. Dies müssen 18-mal so viele Zeilen sein, wie Sie auf haben Sheet1; also 18×900=16200.
  5. Alle Sheet2Werte kopieren und einfügen.
  6. Spalte filtern S. Nur die Nullen anzeigen. Alle Zeilen löschen (außer Zeile 1). Filter entfernen.

Erledigt.

Antwort2

Einfachere Lösung, aber mehr manueller Aufwand: Kopieren Sie die eindeutigen IDs x-mal (wobei x die Anzahl der Spalten ist, die in Zeilen umgewandelt werden sollen) und wenden Sie bei jeder Iteration die VLookup-Funktion mit der Spalte an, die jedes Mal in Zeilen umgewandelt werden soll.

verwandte Informationen