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)

Picture3png

$[…]表示字符串,避免在 Excel 中转义要写两个引号。E@b读入无标题的表格;pjoin@f 表示全连接;select(#1) 选出第 1 个字段不为空的记录replace@s 做多项匹配替换array将记录转为序列,ifn 当第 1 个参数为空时返回第 2 个参数

https://stackoverflow.com/questions/78370163/how-do-you-combine-multiple-column-pairs-into-one-table-with-zeros-for-missing