我有一个包含订单数据的电子表格,其中每一行代表一个不同的订单。每个订单都有多个项目,都在同一行上。我试图将每个附加项目移动到原始项目下方的新行中。我为第一行创建了单元格调用,但我想知道如何将这些附加行复制/粘贴(插入)到包含订单的每一行下方。
实际上,这些列是这样的:
[order number] [customer info] [item info] [item info] [item info] [item info]
我需要它
[order number] [customer info] [item info]
[item info]
[item info]
[item info]
有没有办法复制第二、第三和第四行单元格调用并将其插入/粘贴到每行下方?有效地在每行后粘贴多行?
提前致谢!
答案1
如果每行都有相同数量的附加项或至少相同的最大附加项数量,则这种列展开很容易。
假设每行最多有 5 个项目。在新工作表中,您可以使用 INDEX 展开 C 列(项目)中的数据:
=INDEX(Sheet1!$A:$Z, INT((ROW()-1)/5)+1, MOD((ROW()-1),5)+3)
所以
Row 1 would index to sheet1!R1C3 i.e. order 1 item 1
Row 2 would index to sheet1!R1C4 i.e. order 1 item 2
...
Row 5 would index to sheet1!R1C7 i.e. order 1 item 5
Row 6 would index to sheet1!R2C3 i.e. order 2 item 1
Row 7 would index to sheet1!R2C4 i.e. order 2 item 2
Etc.
您使用相同的逻辑仅每 5 行列出订单号和客户姓名,即IF(MOD(ROW()-1,5)=0, INDEX(...), "")
。
现在,对于项目数少于最大数量的行,显然您将生成空行,更准确地说,返回具有零值的行。您可以使用自动过滤器过滤所有不等于零的值。但是,自动过滤器将需要一个标题行,这意味着您的第一个数据行将不是上面示例中的第 1 行,而是第 2 行。要纠正这个问题,您只需要在上面的公式中将 ROW 偏移量调整为 ROW()-2。同样,如果原始数据中有标题,请将行 INDEX 偏移量增加另一个 +1,即 INT((ROW()-1)/5)+2。