将多列同类项整理到一列
例题描述和简单分析
有Excel文件Book1.xlsx,数据如下所示:
A |
B |
… |
H |
I |
… |
|
1 |
4/1/2021 |
4/1/2021 |
… |
4/2/2021 |
4/2/2021 |
… |
2 |
AAA |
BBB |
… |
AAA |
BBB |
… |
3 |
6 |
9 |
… |
9 |
10 |
… |
4 |
8 |
6 |
… |
10 |
7 |
… |
5 |
3 |
2 |
… |
2 |
3 |
… |
… |
… |
… |
… |
… |
… |
… |
需要将多列同类项整理到一列,结果如下所示:
A |
B |
C |
D |
… |
|
1 |
AAA |
时间 |
BBB |
时间 |
… |
2 |
6 |
4/1/2021 |
9 |
4/1/2021 |
… |
3 |
8 |
4/1/2021 |
6 |
4/1/2021 |
… |
… |
… |
… |
… |
… |
… |
8 |
9 |
4/2/2021 |
10 |
4/2/2021 |
… |
9 |
10 |
4/2/2021 |
7 |
4/2/2021 |
… |
… |
… |
… |
… |
… |
… |
解法及简要说明
在集算器中编写脚本p1.dfx,如下所示:
A |
|
1 |
=file("Book1.xlsx").xlsimport@w() |
2 |
=transpose(A1).group(~(2)) |
3 |
=A2.(~.conj(~.m(3:).select(~).(~|A2.~.~(1)))) |
4 |
=transpose(A3).(~.conj()) |
5 |
=A2.conj(~.~(2)|"时间") |
6 |
=file("result.xlsx").xlsexport@w([A5]|A4) |
简要说明:
A1 Excel读成序列的序列
A2 转置A1,按第二列(类别)分组
A3 遍历每组(类别),合并每天的数与当天日期组成的序列
A4 转置A3,合并每行序列
A5 拼表头
A6 表头并数据的结果导出至result.xlsx
http://club.excelhome.net/thread-1587358-1-1.html