Excel将一行变成多行

Don*_*Don 6 microsoft-excel

我有多个商品可在多个配送中心(即多对多关系)中使用。目前每个项目有一行,每个配送中心有一列。该行对项目在小区 X和集散地列 Ÿ标记与配送中心的代码Ÿ如果项目 X可用那里,否则留空。具有多个配送中心的项目将有多个配送中心代码(在它们各自的列中)。所以当前工作表看起来像:

    |   A    |         B         |*|                      S-AJ                      |
1   |  ID #  |   Description     |…|              Distribution Centers              |
2   |   17   |   Ginkgo Biloba   |…|      |      |      |      |      |      |  SE  |
3   |   42   |   Ginseng         |…|      |  MP  |  MS  |      |  NW  |      |      |
                     ?
Run Code Online (Sandbox Code Playgroud)

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  |
                     ?
Run Code Online (Sandbox Code Playgroud)

其中单元格A3:R3A4:R4A5:R5包含相同的信息。

我能想到的唯一方法是将项目编号复制到多行中,这会很耗时;并且在具有分发代码的列中,我将更改每个分发中心可用的项目的代码。我将为 900 件物品做这件事。有没有更简单的方法来做到这一点?

Sco*_*ott 6

  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-19Sheet2行映射到第 2Sheet1行,Sheet2将第20-37 行映射到第 3 行Sheet1,等等。这& ""会导致 Excel 在引用Sheet1. 如果 中没有任何空格Sheet1,则可以将其关闭。如果您不喜欢这个特定的解决方案,您可以使用Display Blank when Referencing Blank Cell in Excel中的其他解决方案之一 。

    将其向右拖动/填充到单元格R2

  3. 输入=INDEX(Sheet1!$S:$AJ, INT((ROW()-2)/18)+2, MOD(ROW()-2, 18)+1)Sheet2!S2。此参考文献在同一行中Sheet1为上述式中,但Sheet2!S2会从该值Sheet1!S2Sheet2!S3得到从值Sheet1!T2Sheet2!S4从得到值Sheet1!U2等,这将显示0S代表空白。
  4. 选择整行A2:S2并向下拖动/填充以获取所有数据。这将需要是您所拥有的行数的 18 倍Sheet1;即,18×900=16200。
  5. 复制所有Sheet2并粘贴值。
  6. 过滤列S。只显示零。删除所有行(第 1 行除外)。取下过滤器。

完毕。