將Excel中的一行變成多行

將Excel中的一行變成多行

我有多個商品在多個配送中心提供(即多對多關係)。目前,每個項目佔一行,每個配送中心佔一列。專案行中的一個儲存格 X以及配送中心欄 標示配送中心代碼如果專案 X在那裡可用,否則為空白。具有多個配送中心的商品將有多個配送中心代碼(在各自的欄位中)。所以目前的工作表看起來像:

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

CR包含商品的其他屬性,例如 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:R3A4:R4、 和A5:R5包含相同的資訊。

我能想到的唯一方法是將項目編號複製到多行中,這將非常耗時;在具有配送代碼的欄位中,我將更改每個配送中心提供的商品的代碼。我將為 900 個項目執行此操作。有沒有更簡單的方法來做到這一點?

答案1

  1. 建立一個新工作表。複製標題行、列寬和格式,但不複製 Columns T- AJ。最簡單的方法可能是複製整個工作表,然後刪除除 1 之外的所有行並取消合併列S- AJ
  2. 首先,我們希望將每個專案行複製Sheet118Sheet2 次—每個配送中心一次。輸入。  將第 2-19 行對應到 上的第 2 行,將第 20-37 行對應到 上的第 3 行,等等。如果 中沒有任何空格,則可以將其保留。如果您不喜歡這個特定的解決方案,您可以使用其他解決方案之一 =INDEX(Sheet1!A:A, INT((ROW()-2)/18)+2, 1) & ""Sheet2!A2INT((ROW()-2)/18)+2Sheet2Sheet1Sheet2Sheet1& ""Sheet1Sheet1在 Excel 中引用空白儲存格時顯示空白

    將其拖曳/填充到右側的儲存格中R2

  3. 進入。=INDEX(Sheet1!$S:$AJ, INT((ROW()-2)/18)+2, MOD(ROW()-2, 18)+1) 這引用與上述公式Sheet2!S2相同的行,但從獲取值, 從獲取值, 從 獲取值,等等。Sheet1Sheet2!S2Sheet1!S2Sheet2!S3Sheet1!T2Sheet2!S4Sheet1!U20
  4. 選擇整行A2:S2並向下拖曳/填充以取得所有資料。這需要是您所擁有的行數的 18 倍Sheet1;即18×900=16200。
  5. 複製所有Sheet2值並貼上。
  6. 過濾柱S。僅顯示零。刪除所有行(第 1 行除外)。拆下過濾器。

完畢。

答案2

更容易解決,但需要更多的手動工作:為每次迭代複製唯一的 ID x 時間數(其中 x 是要轉換為行的列數),每次應用 vlookup 以及要轉換為行的列

相關內容