将后 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