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 C
bis R
enthalten 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
- 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 -AJ
aufzuheben .S
AJ
Zuerst wollen wir jede Artikelzeile von
Sheet1
aufSheet2
18 Mal replizieren – einmal für jedes Vertriebszentrum. Geben Sie=INDEX(Sheet1!A:A, INT((ROW()-2)/18)+2, 1) & ""
einSheet2!A2
.INT((ROW()-2)/18)+2
ordnet die Zeilen 2-19 aufSheet2
Zeile 2 auf zuSheet1
, die Zeilen 20-37 aufSheet2
Zeile 3 aufSheet1
usw. Dies& ""
führt dazu, dass Excel ein Leerzeichen anzeigt, wenn auf eine leere Zelle in verwiesen wirdSheet1
. Wenn Sie keine Leerzeichen in habenSheet1
, 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
.- Geben Sie
=INDEX(Sheet1!$S:$AJ, INT((ROW()-2)/18)+2, MOD(ROW()-2, 18)+1)
in einSheet2!S2
. Dies verweist auf dieselbe Zeile inSheet1
wie die obige Formel,Sheet2!S2
ruft jedoch den Wert aus abSheet1!S2
,Sheet2!S3
ruft den Wert aus abSheet1!T2
,Sheet2!S4
ruft den Wert aus abSheet1!U2
usw. Dadurch werden0
s für Leerzeichen angezeigt. - Wählen Sie die gesamte Zeile aus
A2:S2
und 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 habenSheet1
; also 18×900=16200. - Alle
Sheet2
Werte kopieren und einfügen. - 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.