如何实现多列对比去重

例题描述和简单分析

有 Excel 文件 book1.xlsx,数据如下所示:

现在要将去除重复记录,并将数据合并,结果如下:

需要注意:学号和姓名相同,而年龄不同,说明其中有一行的数据有误,这就需要手动进行处理,不能够删除其中某一行。

解法及简要说明

在集算器中编写脚本 dup.dfx,如下所示:


A

1

=clipboard().import@t()

2

=A1.group(学号 )

3

=A2.(~.run(if(性别 ==null, 性别 =A2.~.(性别).ifn()),if( 年龄 ==null, 年龄 =A2.~.( 年龄).ifn()))).conj()

4

=A3.group@1(学号, 姓名, 性别, 年龄 )

5

=clipboard(A4.export@t())

简要说明:

A1   从剪贴板里读取数据,选项 @t 表示首行是列标题

A2   按学号将记录分组

A3  将空数据(性别、年龄)补齐

A4  对补齐后的数据,去除重复的记录

A5   把A4转成字符串后复制到剪贴板中,选项 @t 表示要转出列标题

 

代码写好以后,到 Excel 文件里选择数据 A1:D11,然后按 Ctrl+C 复制到剪贴板。回到集算器,按 F9 运行程序,运行结束后再回到 Excel 文件,点击 A13,按 Ctrl+V 就可以把计算结果粘贴过来。