概要:在 Microsoft Excel 中,可以创建宏来删除列表中的重复项。也可以创建宏来比较两个列表,并删除第二个列表中那些也出现在第一个(主)列表中的项目。如果您想将两个列表合并在一起,或者如果只想看到新的信息,则上述做法很有用。本文包含 Microsoft Visual Basic for Applications 示例宏(Sub 过程),说明如何删除单个列表中的重复记录(示例 1),以及如何在比较两个列表后删除重复记录(示例 2)。这些宏并不要求对列表进行排序。此外,这些宏可删除任意数量的重复项,无论项目在列表中是重复一次还是多次。

Excal数据示例如下:

序号      图号     名称      数量
 1        123    气缸盖     10
 2        123    气缸盖     10
 3        456    喷油器     30

对于这段数据进行简单处理,删除序号1或者2其中的任何一行均可,但是要保留其中一行

Sub 删除重复行()
Dim xRow As Integer
Dim i As Integer
xRow = Range("B65536").End(xlUp).Row
For i = To xRow
For j = i + To xRow
If Cells(j, ) = Cells(i, ) Then
Range(Cells(j, ), Cells(j, )).Rows.Delete
j = j -
xRow = xRow -
End If
Next
Next
End Sub

输入上述代码,运行该代码或运行宏“删除重复行”即可。有个缺陷,只是判断图号相同即删除,假如图号相同、数量不同的行照样删除。

示例 1:删除单个列表中的重复项

以下示例宏搜索区域 A1:A100 中的单个列表,并删除列表中的所有重复项。此宏要求在列表区域中不能有空白单元格。如果列表确实包含空白单元格,请按升序对数据进行排序,以使空白单元格全都位于列表的末尾。

Sub DelDups_OneList()
Dim iListCount As Integer
Dim iCtr As Integer ' Turn off screen updating to speed up macro.
Application.ScreenUpdating = False ' Get count of records to search through.
iListCount = Sheets("Sheet1").Range("A1:A100").Rows.Count
Sheets("Sheet1").Range("A1").Select
' Loop until end of records.
Do Until ActiveCell = ""
' Loop through records.
For iCtr = To iListCount
' Don't compare against yourself.
' To specify a different column, change 1 to the column number.
If ActiveCell.Row <> Sheets("Sheet1").Cells(iCtr, ).Row Then
' Do comparison of next record.
If ActiveCell.Value = Sheets("Sheet1").Cells(iCtr, ).Value Then
' If match is true then delete row.
Sheets("Sheet1").Cells(iCtr, ).Delete xlShiftUp
' Increment counter to account for deleted row.
iCtr = iCtr +
End If
End If
Next iCtr
' Go to next record.
ActiveCell.Offset(, ).Select
Loop
Application.ScreenUpdating = True
MsgBox "Done!"
End Sub

示例 2:比较两个列表并删除重复项

以下示例宏将一个(主)列表与另一个列表进行比较,然后删除第二个列表中那些也出现在主列表中的重复项。第一个列表在 Sheet1 上的区域 A1:A10 中。第二个列表在 Sheet2 上的区域 A1:A100 中。要使用此宏,请选择任一个表,然后运行此宏。

Sub DelDups_TwoLists()
Dim iListCount As Integer
Dim iCtr As Integer ' Turn off screen updating to speed up macro.
Application.ScreenUpdating = False ' Get count of records to search through (list that will be deleted).
iListCount = Sheets("sheet2").Range("A1:A100").Rows.Count ' Loop through the "master" list.
For Each x In Sheets("Sheet1").Range("A1:A10")
' Loop through all records in the second list.
For iCtr = To iListCount
' Do comparison of next record.
' To specify a different column, change 1 to the column number.
If x.Value = Sheets("Sheet2").Cells(iCtr, ).Value Then
' If match is true then delete row.
Sheets("Sheet2").Cells(iCtr, ).Delete xlShiftUp
' Increment counter to account for deleted row.
iCtr = iCtr +
End If
Next iCtr
Next
Application.ScreenUpdating = True
MsgBox "Done!"
End Sub

在 Excel 中如何使用宏示例删除列表中的重复项的更多相关文章

  1. for循环删除列表中元素遇到的漏删的问题(python)

    问题描述:python中通过for循环来删除列表中的两个相邻的元素,存在漏删的问题 比如说下面的例子,准备删掉2和3,但是结果是2删掉了,3没删掉 是因为把2删掉后3的下标就变成了1,但是原本下标为1 ...

  2. React 点击删除列表中对应项(React 获取DOM中自定义属性)

    点击删除按钮,删除列表中对应项本来是React比较基础的应用,可是应用情况变得复杂了以后,我还真想了一会儿才搞定. 简化一下应用场景:点击新增按钮,增加一条输入框,点击输入框旁边的按钮,删除该输入框( ...

  3. python中循环删除列表中元素时的坑!

    循环删除列表中元素时千万别用正序遍历,一定要用反序遍历! 废话不多说,先上案例代码: def test(data): for i in data: data.remove(i) return data ...

  4. python中如何删除列表中的所有元素

    今天写代码的时候遇到一个小问题,Python中要删除列表中的所有元素.Python本身就提供了pop.remove.del这些删除的函数.我想着用循环实现,结果很麻烦.几番周折上了stackoverf ...

  5. Python删除列表中元素

    Python中列表(list)是很常用的数据结构,删除列表中的元素有几种方法 列表的remove方法 lst = [1, 1, 3, 4] lst.remove(1) # lst->[1, 3, ...

  6. python删除列表中元素的方法

    删除列表中元素的三种方法-remove.pop.del 1 1.remove: 删除单个元素,删除首个符合条件的元素,按值删除 2 举例说明: 3 >>> str=[1,2,3,4, ...

  7. python删除列表中得重复得数据

    解决思想:将列表转换为 集合,利用集合删除重复数据得特性删除重复数据,然后将集合转换为列表 #删除列表中得重复元素 def delect_1 (lt): s = set(lt) lt = list(s ...

  8. python——删除列表中的元素

    在python中,删除列表元素的方法有三种,分别为remove(),del(),pop()函数 (1)remove() >>> name = ['小明','小华','小红','小李' ...

  9. Delphi for iOS开发指南(6):在iOS应用程序中使用ComboBox组件来从列表中选择某一项

    http://blog.csdn.net/delphiteacher/article/details/8924110 Delphi for iOS开发指南(6):在iOS应用程序中使用ComboBox ...

随机推荐

  1. Gibbs 采样定理的若干证明

    坐标平面上的三点,A(x1,y1),B(x1,y2),C(x2,y1),假设有概率分布 p(x,y)(P(X=x,Y=y) 联合概率),则根据联合概率与条件概率的关系,则有如下两个等式: {p(x1, ...

  2. HTML中DOM对象的属性和方法的层级关系是怎样的?(目录即层次)

    HTML中DOM对象的属性和方法的层级关系是怎样的?(目录即层次) 一.总结 一句话总结:目录就是测试题 1.document取得元素(get element)的方式有哪几种? 解答:四种,分别是id ...

  3. 常用binlog日志操作命令

    1.查看所有binlog日志列表 mysql> show master logs; 2.查看master状态,即最后(最新)一个binlog日志的编号名称,及其最后一个操作事件pos结束点(Po ...

  4. 三步学会用spring开发OSGI——(第一步:环境篇)

    Spring-DM是什么 Spring-DM 指的是Spring Dynamic Modules. dm Server 是一个完全模块化部署的,基于OSGi的Java服务器,为运行企业Java应用和S ...

  5. 卷积神经网络(CNN)与特殊的卷积

    各种卷积操作的可视化的显示形式:GitHub - vdumoulin/conv_arithmetic: A technical report on convolution arithmetic in ...

  6. 不要放弃使用border-box

    不知道有多少老前端像我这样,在项目中很少使用box-sizing这个属性值.因为CSS2.1中只有content-box这一种盒子模式,在CSS3还没有流行的时候,大家在工作中大量基于这种盒子模式写C ...

  7. spring quartz使用多线程并发“陷阱”

    定义一个job:ranJob,设置每秒执行一次,设置不允许覆盖并发执行 <bean id="rankJob" class="com.chinacache.www.l ...

  8. Network architecture for minimalistic connected objects

    In one embodiment, a network architecture comprises minimalistic connected objects (MCOs), distribut ...

  9. 使用python3的base64编解码实现字符串的简易加密解密

    import base64 copyright = 'Copyright (c) 2012 Doucube Inc. All rights reserved.' def main(): #转成byte ...

  10. SharePoint Iframe 一个错误此内容不能显示在一帧&lt;继续&gt;

    在之前的SharePoint网站iframe引用中,我们遇到过以下的问题,就是其他系统或者不通环境的SharePoint网站,引用SharePoint页面会报错"此内容不能显示在一个框架中& ...