概要:在 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 IntegerDim i As IntegerxRow = Range("B65536").End(xlUp).RowFor i = 2 To xRowFor j = i + 1 To xRowIf Cells(j, 2) = Cells(i, 2) ThenRange(Cells(j, 1), Cells(j, 256)).Rows.Deletej = j - 1xRow = xRow - 1End IfNextNext
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 = 1 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, 1).Row Then' Do comparison of next record.If ActiveCell.Value = Sheets("Sheet1").Cells(iCtr, 1).Value Then' If match is true then delete row.Sheets("Sheet1").Cells(iCtr, 1).Delete xlShiftUp' Increment counter to account for deleted row.iCtr = iCtr + 1End IfEnd IfNext iCtr' Go to next record.ActiveCell.Offset(1, 0).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 = 1 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, 1).Value Then' If match is true then delete row.Sheets("Sheet2").Cells(iCtr, 1).Delete xlShiftUp' Increment counter to account for deleted row.iCtr = iCtr + 1End IfNext iCtr
Next
Application.ScreenUpdating = True
MsgBox "Done!"
End Sub

转载于:https://www.cnblogs.com/TBW-Superhero/p/7007217.html

在 Excel 中如何使用宏示例删除列表中的重复项相关推荐

  1. python列表中怎么去掉空值_Python 如何删除列表中的空值

    今天在获取android性能CPU测试数据时,发现这么一个问题: # -*- coding:utf-8 -*- import os import time cpuInfo = os.popen(r'a ...

  2. python删除列表中的重复元素并保持相对顺序不变

    python删除列表中的重复元素并保持相对顺序不变 从列表中删除重复项以便所有元素都是唯一的同时保持原有相对顺序不变 对于列表我们可以使用如下方法: l1 = [1,7,7,8,5,5,4] l2 = ...

  3. python for 循环中使用 remove 删除列表中的元素

    python for 循环中使用 remove 删除列表中的元素 错误的代码 # !/usr/bin/python # encoding: utf-8 # -*- coding: utf8 -*- o ...

  4. python 删除列表中的指定元素

    python 删除列表中的指定元素 def delete_list(list1,ele):"""删除列表中的指定元素:param list1:原列表:param ele: ...

  5. python处理列表中字典_Python列表嵌套字典的时候,如果要删除列表中其中一个字典要如何操作...

    如果要删除列表中其中一个字典要操作如下 第一种方法 1.1 name_list=[{"name":"张三","age":18},{" ...

  6. 删除列表中满足一定条件的元素

    从列表中删除满足一定条件的元素. 如:删除一个列表中长度为0的元素,或者删除列表中同时是2和3的倍数的元素. 做过高级语言编程的人想当然的会认为"这很简单",可以如下面的方式来实现 ...

  7. c#中的long类型示例_C#中带示例的带符号字节数组

    c#中的long类型示例 C#中的有符号字节数组 (Signed Byte Array in C#) In C#.Net, we can create a signed byte array by u ...

  8. c#中的long类型示例_C#中带示例的无符号字节数组

    c#中的long类型示例 C#中的无符号字节数组 (Unsigned Byte Array in C#) In C#.Net, we can create an unsigned byte array ...

  9. 删除列表中重复值,重复值保留一个

    #删除列表中的重复的值,保留重复值的第一个值 s=[1,2,3,2,9,2,4,8,3,5,5,6,3,8,3,6,7,8] print(s) #print(l.count(9)) i=0 while ...

最新文章

  1. img下出现几像素空白的问题
  2. pybot --help
  3. php文件多上传文件,php文件上传(多文件上传)
  4. 【计算机网络】Quiz集合
  5. TensorFlow 三岁了,你想对它说点什么?
  6. java工作中mq应用多吗_RabbitMQ消息中间件在工作中的应用场景
  7. Socket 实例之透析java,C#的互操作
  8. MFC截图工具(不断更新)
  9. shell脚本批量删除几天前的文件
  10. 降维系列之 SNE与t-SNE
  11. 知识图谱关系抽取 python_知识图谱关系抽取
  12. halcon案例-指纹图片增强
  13. 网络基础2---->网络数据传输(局域网)
  14. 青岛黄海学院《燃情世界杯》
  15. linux ls -la文件信息含义
  16. Android怎么改airpod的名字,AirPods怎么改名?AirPods永久更改名称教程
  17. 1393 虐待病毒基因
  18. RoboGUIDE v2.3.1-ISO 1CD(自控软件,一款使用虚拟机器人控制技术的机器人模拟软件)
  19. Requests+正则表达式爬取猫眼电影(TOP100榜)
  20. 判断用户输入的数字是奇数还是偶数

热门文章

  1. Maven开发web项目的搭建
  2. Apache Rewrite 规则详解
  3. 我的Notepad++环境配置
  4. Anaconda ubuntu16.04 Cuda 8.0安装pytorch
  5. Apache+PHP环境搭建
  6. ITK读取CT DICOM,如何设置窗位和窗宽?
  7. 《Getting Real》读书笔记
  8. 开启3D硬件加速导致Virtualbox无法响应
  9. ASP.NET MVC 3: Razor视图引擎中 @: 和text 语法【转载】
  10. 解决pc端浏览器不兼容的问题