相邻同类项多行合并成一行
例题描述和简单分析
有Excel文件Book1.xlsx,数据如下所示:
A |
B |
C |
|
1 |
源IP地址 |
目的IP地址 |
目的端口 |
2 |
10.3.126.7/32 |
10.3.126.6/32 |
TCP-7946 |
3 |
10.3.126.6/32 |
10.3.126.7/32 |
TCP-7946 |
4 |
10.3.126.5/32 |
10.3.126.4/32 |
TCP-30013 |
5 |
10.3.126.5/32 |
10.3.126.3/32 |
TCP-30013 |
6 |
10.3.126.5/32 |
10.3.126.2/32 |
TCP-30013 |
7 |
10.3.126.5/32 |
10.3.126.2/32 |
TCP-6002 |
8 |
… |
… |
… |
需要将相邻的源IP地址和目的IP地址去重,并将目的端口合并,结果如下所示:
A |
B |
C |
|
1 |
源IP地址 |
目的IP地址 |
目的端口 |
2 |
10.3.126.7/32 |
10.3.126.6/32 |
TCP-7946 |
3 |
10.3.126.6/32 |
10.3.126.7/32 |
TCP-7946 |
4 |
10.3.126.5/32 |
10.3.126.4/32 |
TCP-30013 |
5 |
10.3.126.5/32 |
10.3.126.3/32 |
TCP-30013 |
6 |
10.3.126.5/32 |
10.3.126.2/32 |
TCP-30013 |
7 |
… |
… |
解法及简要说明
在集算器中编写脚本p1.dfx,如下所示:
A |
|
1 |
=file("Book1.xlsx").xlsimport@t() |
2 |
=A1.group@o(#1,#2;~.(#3).concat@n():目的端口) |
3 |
=file("result.xlsx").xlsexport@at(A2;"sheet1") |
简要说明:
A1 Excel读成序表
A2 按前两列相邻分组(源IP地址和目的IP地址),把每组的目的端口用换行符拼成串
A3 将序表A2以追加方式导出至result.xlsx的sheet1页(若导出excel时要支持自动换行,需要提前准备该Excel文件,将sheet1的C2格设为自动换行)
http://club.excelhome.net/thread-1586911-1-1.html