□马红旭 内蒙古师范大学数学科学学院
【摘要】 文章讨论的问题是对具有庞大数据量的Excel 电子表中出现的重复记录,提出了有效的标记和删除办法。
【关键词】 Excel 重复数据记录 标记 删除
引言
在对数据量比较庞大的Excel 电子表维护过程中,我们以管理学校学籍数据信息为例,经常会遇到这样一个问题, 就是需要查找出同一个工作簿内多个不同工作表中,学号、姓名或者其它字段相同的重复记录。要求先把它们显示出来,然后再用人工或自动方法进行删除。由于数据量很大,人工查找删除又费时费力,而简单合并成一个工作表又有可能造成数据混乱,所以,这里我们将给出Excel 整理重复数据记录的方法。
一、Excel 数据源备份
为防止数据丢失,可以先插入若干工作表,复制数据源所有数据在这些表中,使数据源得到备份。
二、查找、标记重复记录
打开工作表数据,我们可以根据电子表中每个字段名,逐列排查重复记录。这里以检测A 列为例,首先在A 列右侧先插入一列,得到B 列作为标记列,然后在B1 单元格中输入公式:=IF(ROW()=MATCH(A1,A:A,0),1,”重复”),函数MATCH 的作用是对整个A 列(A:A)进行查找,如果第一次查找到A1 值,则使对应B1 单元内容等于1,如果是第二次或第N 次查找到A1 值,则在右侧B 列标记列对应单元中写入“重复”字样。
然后按照记录个数需要,向下拖动B1 单元右下角的复制句柄,使B2、B3…Bn 得到相应的值,Bn 单元格中公式内容为:=IF(ROW()=MATCH(An,A:A,0),1,” 重复”), 其中An 依次代表A1 到An 单元的值。
而公式中A:A 表示检测整个A 列,这里应该注意A 列数据应尽量不为空。如果是A 列某一段区域, 用户还可以根据需要自行修改,比如写成A2:A10,表示只检查A2 到A10 单元的数据有没有重复。
这时再仔细观察新的标记列B 列所有数据,它们的值分别为1 或者“重复”字样,具有“重复”字样的记录,就是我们标记的多余重复记录,稍后需要用户删除。
当然,我们还可以使用COUNTIF()函数,在B1 单元格中输入公式:=IF(COUNTIF(A$2:A6,A6)>1,”重复”,1),再依据A 列记录个数的需要向下拖动B1 单元格右下角的复制句柄,同样可以达到查找、标记重复记录的目的,这两种标记方法既简单又非常有效。
三、删除带有重复标记的所有记录
经过上述处理之后,所有多余的重复记录就都被我们标记出来了,接下来的任务是把所有带“重复”标记的记录删除。由于手工删除工作量可能太大,又容易出错,所以这里我们启动vba,运行如下程序,让计算机对默认工作表sheet1 自动完成删除多余记录的任务。
Sheet1 删除重复记录程序代码如下:
Subrt()
DimiAsInteger
Fori=10To1Step
IfApplication.WorksheetFunction.CountIf(
Cells(i,2),”重复”)ThenRows(i).Delete
‘查找同行B 列中等于‘重复’值,找到则删除该行记录
Nexti
End
另外,稍加修改上述程序,我们就可以对同一个工作簿中其它张工作表(以sheet3 为例)中的重复记录,进行相同的删除操作。该程序中还考虑到个别复杂情况下,用户有可能对工作表中若干列都进行过重复记录标记工作,其中某几列同时做过标记才能删除,这里用户只需要修改if 语句中逻辑表达式即可完全任务。至此,工作表中所有多余记录都被删除,最后删除标记列B 列。
程序代码如下:
Subrt()
DimiAsInteger
Fori=10To1Step
IfSheet3.Cells(i,4)=” 重复”AndSheet3.Cells(i,5)=” 重复”ThenSheet3.Rows(i).Delete
‘查找sheet3 中同行第4 列和第5 列同时等于“重复” 字样,找到则删除该行记录
Nexti
EndSub
四、综述
利用上述方法,我们把Excel 所有重复数据记录找出并删除了,问题得到解决,该方法省时省力,安全高效,对于大型工作表数据维护的意义非常重大。
参 考 文 献
[1] 谭浩强等编著.VisualBasic 语言教程[M]. 北京:电子工业出版社,2000.10
[2] 周维武等编著. 计算机基础教程(第3 版)[M]. 北京:电子工业出版社,2008.
[3] 李飞,廖琪梅,何鑫主编. 计算机应用新教程[M]. 西安:西安电子科技大学出版社,2004.