Excel 多行表头的列转行

ExcelA3:F6是带表头的典型表格,但上面多了额外的两行表头:


A

B

C

D

E

F

1



Actuals

Actuals

Plan

Plan

2



FY20

FY21

FY20

FY21

3

Country

Owner

1/1/2020

1/1/2020

1/1/2020

1/1/2020

4

France

Richard

100

150

80

160

5

France

Martin

120

140

130

140

6

France

Pierre

50

100

50

80

现在要将典型表格连同额外的两行表头同时进行列转行:

8

A

B

C

D

E

F

9

Country

Owner

Version

Year

Date

Value

10

France

Richard

Actuals

FY20

1/1/2020

100

11

France

Richard

Actuals

FY21

1/1/2020

150

12

France

Richard

Plan

FY20

1/1/2020

80

13

France

Richard

Plan

FY21

1/1/2020

160

14

France

Martin

Actuals

FY20

1/1/2020

120

15

France

Martin

Actuals

FY21

1/1/2020

140

16

France

Martin

Plan

FY20

1/1/2020

130

17

France

Martin

Plan

FY21

1/1/2020

140

18

France

Pierre

Actuals

FY20

1/1/2020

50

19

France

Pierre

Actuals

FY21

1/1/2020

100

20

France

Pierre

Plan

FY20

1/1/2020

50

21

France

Pierre

Plan

FY21

1/1/2020

80

使用 SPL XLL,输入公式:

=spl("=c=transpose(?2),?1.conj( (a=~).m(3:).(a.to(2)|c(#)|~))",A4:F6,C1:F3)

Picture1png

transpose将表头 C1:F3 进行转置,conj 合并集合成员,~ 表示表格 A4:F6 每一行,m(3:) 表示从每行的第 3 个成员取到结尾。

https://stackoverflow.com/questions/78433579/unpivot-columns-with-multiple-relevant-rows-with-headers-powerquery-m-language