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