将多列同类项整理到一列

例题描述和简单分析

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