将后 4 列有值格拆到不同的行

例题描述和简单分析

Excel 文件 Book1.xlsx,sheet1 中数据如下所示:


A B C D E F
1 Color Food 1-Jan 1-Feb 1-Mar 1-Apr
2 Red Coke 3 4 5
3 Purple Grapes 6 3 7
4 Green Grapes 1 1 1
5 Yellow Lemon 2 3
6 Orange Orange 1 2
7 Purple Grapes 2
8 Purple Grapes 3
9 Purple Grapes 4
10 Purple Grapes 5

需要在sheet2 中,将后 4 列有值格拆到不同的行,结果如下: 


A B C D
1 Color Food Date Quantity
2 Red Coke 1-Jan 3
3 Red Coke 1-Feb 4
4 Red Coke 1-Mar 5
5 Purple Grapes 1-Feb 6
6 Purple Grapes 1-Mar 3
7 Purple Grapes 1-Apr 7
8 Green Grapes 1-Jan 1
9 Green Grapes 1-Feb 1
10 Green Grapes 1-Mar 1
11 Yellow Lemon 1-Mar 2
12 Yellow Lemon 1-Apr 3
13 Orange Orange 1-Jan 1
14 Orange Orange 1-Feb 2
15 Purple Grapes 1-Jan 2
16 Purple Grapes 1-Feb 3
17 Purple Grapes 1-Mar 4
18 Purple Grapes 1-Apr 5

解法及简要说明

Excel 中加载插件 ExcelRaq.xll,加载宏文件 esproc_template.xla 后。

选中sheet2 的 A1 格,输入公式:=esproc("=?1.news(~.to(3:);?1.~(1):Color,?1.~(2):Food,?2(#):Date,~:Quantity).select(Quantity)",Sheet1!A2:F10,Sheet1!C1:F1),按下 ctrl+enter 后,删除第一行,即可实现需求。

问答搜集

https://stackoverflow.com/questions/63601754/convert-array-to-list-and-copy-rows-that-are-on-the-same-row-vba