马红旭
【摘要】 文章讨论的问题是对具有庞大数据量的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-1i初值可以取其它值
IfApplication.WorksheetFunction.CountIf(
Cells(i,2),”重复”)ThenRows(i).Delete
‘查找同行B列中等于‘重复值,找到则删除该行记录
Nexti
End
另外,稍加修改上述程序,我们就可以对同一个工作簿中其它张工作表(以sheet3为例)中的重复记录,进行相同的删除操作。该程序中还考虑到个别复杂情况下,用户有可能对工作表中若干列都进行过重复记录标记工作,其中某几列同时做过标记才能删除,这里用户只需要修改if语句中逻辑表达式即可完全任务。至此,工作表中所有多余记录都被删除,最后删除标记列B列。
程序代码如下:
Subrt()
DimiAsInteger
Fori=10To1Step-1循环
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.