我有多個商品在多個配送中心提供(即多對多關係)。目前,每個項目佔一行,每個配送中心佔一列。專案行中的一個儲存格 X以及配送中心欄 是標示配送中心代碼是如果專案 X在那裡可用,否則為空白。具有多個配送中心的商品將有多個配送中心代碼(在各自的欄位中)。所以目前的工作表看起來像:
| 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
- 建立一個新工作表。複製標題行、列寬和格式,但不複製 Columns
T
-AJ
。最簡單的方法可能是複製整個工作表,然後刪除除 1 之外的所有行並取消合併列S
-AJ
。 首先,我們希望將每個專案行複製
Sheet1
18Sheet2
次—每個配送中心一次。輸入。 將第 2-19 行對應到 上的第 2 行,將第 20-37 行對應到 上的第 3 行,等等。如果 中沒有任何空格,則可以將其保留。如果您不喜歡這個特定的解決方案,您可以使用其他解決方案之一=INDEX(Sheet1!A:A, INT((ROW()-2)/18)+2, 1) & ""
Sheet2!A2
INT((ROW()-2)/18)+2
Sheet2
Sheet1
Sheet2
Sheet1
& ""
Sheet1
Sheet1
在 Excel 中引用空白儲存格時顯示空白。將其拖曳/填充到右側的儲存格中
R2
。- 進入。
=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
0
- 選擇整行
A2:S2
並向下拖曳/填充以取得所有資料。這需要是您所擁有的行數的 18 倍Sheet1
;即18×900=16200。 - 複製所有
Sheet2
值並貼上。 - 過濾柱
S
。僅顯示零。刪除所有行(第 1 行除外)。拆下過濾器。
完畢。
答案2
更容易解決,但需要更多的手動工作:為每次迭代複製唯一的 ID x 時間數(其中 x 是要轉換為行的列數),每次應用 vlookup 以及要轉換為行的列