本文,我们来学习一下如何在EXCEL中使用VBA,查找重复的值,并且,自动将重复的值的第一个,复制粘贴到另外一个表!
下面的这个例子,是一个非常精典的例子!
下表,是Sheet1,是一张使用打卡机来打卡的记录表!
A列是打卡日期;B列是打卡时间,C列是打卡机的编号;
通过观察上表,我们不难发现,C列的打卡机的编号,存在重复;
现在,我们要如何整理这样的数据呢,请看下表Sheet2;
现在,我们要做的就是,从表一Sheet1中,查找出重复的打卡机的编号,将第一个重复值,存放到Sheet2中的A列;
这样,Sheet2中的A列的打卡机编号,就是唯一的,不存在重复了;
接着,我们要完成的就是:每个打卡机的编号所对应的数据,只能有一条,不让其占多行;制作原理就是:对照Sheet2中的A列的打卡机编号,用它来查找在Sheet1中所存在的记录,然后,把打卡时间积累起来,统一放到Sheet2中从B列一直往后的单元格中。
总而言之,是这样的:
①把Sheet1中的打卡机的编号,存放到Sheet2中的A列,不允许存在重复;
②对照Sheet2中的A列的打卡机编号,去找与之相对应的存放在Sheet1中的打卡时间,然后,把找到的数据,填充到Sheet2中与打卡机编号一致的从B列一直往后的单元格中。
怎么办呢?
右键点击Sheet2,在弹出的快捷菜单中选择“查看代码”,如下图!
弹出VBA代码输入框;
最后,和下图一样,输入代码,在VBA窗口中点击保存,最后返回到Excel,整个过程结束。
为了方便大家的学习,下面,俺将代码粘贴如下,供大家复制使用!
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim boot Dim count Dim getvalueboot boot = 1 getvalueboot = 1 For i = 1 To Sheet1.UsedRange.Rows.count'以下代码的功能是,查找重复值 For j = 1 To Sheet2.UsedRange.Rows.count If (Sheet1.Cells(i, 3).Value = Sheet2.Cells(j, 1).Value) Then count = count + 1 End If Next j If (count = 0) Then boot = boot + 1 Sheet2.Cells(boot, 1).Value = Sheet1.Cells(i, 3).Value End If count = 0 Next i
For k = 1 To Sheet2.UsedRange.Rows.count'以下代码的功能是:获取与打卡机一致的打卡时间 For m = 1 To Sheet1.UsedRange.Rows.count If (Sheet2.Cells(k, 1).Value = Sheet1.Cells(m, 3).Value) Then getvalueboot = getvalueboot + 1 Sheet2.Cells(k, getvalueboot).Value = Sheet1.Cells(m, 2).Value End If Next m getvalueboot = 1 Next k End Sub
以上代码或在使用上,有什么地方不清楚的,敬请联系本站站长! [办公软件]Range结合Find方法的VBA实例 [办公软件]Excel记录表格被打印次数的VBA代码 [办公软件]excel中的VBA中的With语句的使用介绍及实例 [办公软件]把每个工作表分别单独保存为一个工作薄的VBA代码 [办公软件]合并多个工作薄的VBA代码示例 [办公软件]Excel快速合并多个工作表为一个工作表的VBA代码 [办公软件]Excel全名查找或单字查找所有工作表之学生姓名的V… [办公软件]在多张幻灯片中分别插入一张图片的VBA宏代码 [办公软件]Excel批量添加批注和删除的VBA代码 [Web开发][ASP/ASP.net]最简单的XML运用
|