Exce 两列一组对齐呈现,缺失补 0
Excel 里有 多 组数据,每组 2 列,每组长度不同。第 1 列是编号,列之间的编号有重复。
A |
B |
C |
D |
E |
F |
G |
H |
|
1 |
Mass |
10 |
Mass |
11 |
Mass |
12 |
Mass |
13 |
2 |
80 |
22005 |
81 |
30908 |
81 |
46532 |
80 |
22259 |
3 |
81 |
33306 |
82 |
47792 |
82 |
97559 |
81 |
42002 |
4 |
82 |
27314 |
84 |
1315498 |
83 |
35698 |
82 |
233130 |
5 |
83 |
27204 |
85 |
110460 |
84 |
2391605 |
84 |
6892485 |
6 |
84 |
644196 |
86 |
25905 |
86 |
51365 |
85 |
502763 |
7 |
85 |
54723 |
87 |
31240 |
87 |
34415 |
86 |
37660 |
8 |
86 |
28384 |
88 |
22801 |
88 |
21819 |
87 |
40078 |
9 |
87 |
32212 |
90 |
24878 |
89 |
25326 |
88 |
39850 |
10 |
88 |
38615 |
91 |
36830 |
90 |
30998 |
89 |
44535 |
11 |
89 |
13155 |
92 |
27189 |
92 |
28916 |
90 |
38188 |
12 |
90 |
20406 |
93 |
29146 |
93 |
19224 |
92 |
31855 |
13 |
95 |
22505 |
94 |
31359 |
93 |
18951 |
||
14 |
96 |
18047 |
95 |
22533 |
94 |
37879 |
||
15 |
97 |
97665 |
96 |
28238 |
95 |
38750 |
||
16 |
97 |
132143 |
96 |
16119 |
||||
17 |
98 |
18459 |
97 |
171050 |
||||
18 |
99 |
17121 |
98 |
23113 |
||||
19 |
101 |
9579 |
99 |
34733 |
||||
20 |
102 |
235454 |
100 |
23821 |
||||
21 |
103 |
25700 |
101 |
28792 |
||||
22 |
104 |
17415 |
102 |
442859 |
||||
23 |
105 |
28789 |
103 |
28505 |
||||
24 |
106 |
16005 |
104 |
14448 |
||||
25 |
107 |
17534 |
106 |
22950 |
||||
26 |
108 |
24548 |
107 |
25922 |
||||
27 |
108 |
29475 |
||||||
28 |
109 |
15177 |
||||||
29 |
110 |
123036 |
||||||
30 |
111 |
30295 |
||||||
31 |
112 |
18465 |
||||||
32 |
113 |
52162 |
||||||
33 |
114 |
19906 |
||||||
34 |
115 |
64107 |
||||||
35 |
116 |
60852 |
现在将所有编号放到第 1 列,各组的编号列对齐第1列并呈现数据列,如果有缺失值则填0。
A |
B |
C |
D |
E |
|
1 |
Mass |
10 |
11 |
12 |
13 |
2 |
80 |
22005 |
0 |
0 |
22259 |
3 |
81 |
33306 |
30908 |
46532 |
42002 |
4 |
82 |
27314 |
47792 |
97559 |
233130 |
5 |
83 |
27204 |
0 |
35698 |
0 |
6 |
84 |
644196 |
1315498 |
2391605 |
6892485 |
7 |
85 |
54723 |
110460 |
0 |
502763 |
8 |
86 |
28384 |
25905 |
51365 |
37660 |
9 |
87 |
32212 |
31240 |
34415 |
40078 |
10 |
88 |
38615 |
22801 |
21819 |
39850 |
11 |
89 |
13155 |
0 |
25326 |
44535 |
12 |
90 |
20406 |
24878 |
30998 |
38188 |
13 |
115 |
0 |
0 |
0 |
64107 |
14 |
102 |
0 |
0 |
235454 |
442859 |
15 |
107 |
0 |
0 |
17534 |
25922 |
16 |
94 |
0 |
0 |
31359 |
37879 |
17 |
99 |
0 |
0 |
17121 |
34733 |
18 |
112 |
0 |
0 |
0 |
18465 |
19 |
91 |
0 |
36830 |
0 |
0 |
20 |
104 |
0 |
0 |
17415 |
14448 |
21 |
109 |
0 |
0 |
0 |
15177 |
22 |
96 |
0 |
18047 |
28238 |
16119 |
23 |
114 |
0 |
0 |
0 |
19906 |
24 |
101 |
0 |
0 |
9579 |
28792 |
25 |
106 |
0 |
0 |
16005 |
22950 |
26 |
93 |
0 |
29146 |
19224 |
18951 |
27 |
111 |
0 |
0 |
0 |
30295 |
28 |
98 |
0 |
0 |
18459 |
23113 |
29 |
103 |
0 |
0 |
25700 |
28505 |
30 |
116 |
0 |
0 |
0 |
60852 |
31 |
95 |
0 |
22505 |
22533 |
38750 |
32 |
108 |
0 |
0 |
24548 |
29475 |
33 |
113 |
0 |
0 |
0 |
52162 |
34 |
100 |
0 |
0 |
0 |
23821 |
35 |
105 |
0 |
0 |
28789 |
0 |
36 |
92 |
0 |
27189 |
28916 |
31855 |
37 |
110 |
0 |
0 |
0 |
123036 |
38 |
97 |
0 |
97665 |
132143 |
171050 |
使用 SPL XLL,输入公式:
=spl("=d=E@b(?), f=(d.fno()\2-1).(~*2+1).(~/$[,]/ (~+1)),d.select(#1).pjoin@f( #1,#1,#2; ${f.(replace@s($[d.select(#N),#N,#M],$[ N,M],~)).concat($[;])}).(~.array().(ifn(~,0)))",A1:H35)
$[…]表示字符串,避免在 Excel 中转义要写两个引号。E@b读入无标题的表格;pjoin@f 表示全连接;select(#1) 选出第 1 个字段不为空的记录;replace@s 做多项匹配替换;array将记录转为序列,ifn 当第 1 个参数为空时返回第 2 个参数
凑个热闹…
先用 transpose 转置,然后每两行一组用 E@p 转置后用 pivot@r 逆透视,conj 为整体再用 pivot@s,为啥用 @s 聚合,因为要产生 0。
好,省了很多手工拼串的操作,补 0 也方便
英文版