相邻同类项多行合并成一行

例题描述和简单分析

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
TCP-6002

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.xlsxsheet1页(若导出excel时要支持自动换行,需要提前准备该Excel文件,将sheet1C2格设为自动换行)

问答搜集

http://club.excelhome.net/thread-1586911-1-1.html