我有多个商品可在多个配送中心(即多对多关系)中使用。目前每个项目有一行,每个配送中心有一列。该行对项目在小区 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:R3、A4:R4和A5:R5包含相同的信息。
我能想到的唯一方法是将项目编号复制到多行中,这会很耗时;并且在具有分发代码的列中,我将更改每个分发中心可用的项目的代码。我将为 900 件物品做这件事。有没有更简单的方法来做到这一点?
T- AJ。复制整个工作表,然后删除除 1 以外的所有行并取消合并列S-可能是最简单的AJ。首先,我们希望将每个项目行从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。
=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等,这将显示0S代表空白。A2:S2并向下拖动/填充以获取所有数据。这将需要是您所拥有的行数的 18 倍Sheet1;即,18×900=16200。Sheet2并粘贴值。S。只显示零。删除所有行(第 1 行除外)。取下过滤器。完毕。