excel存在一个或多个循环如何删除,excel怎么把很多重复出现的删除

首页 > 实用技巧 > 作者:YD1662023-11-04 06:09:40

今日的内容是“VBA之EXCEL应用”的第七章“循环在VBA中的利用”。这讲是第五节“利用循环删除重复项”。这套教程从简单的录制宏开始讲解,一直到窗体的搭建,内容丰富,案例众多。大家可以非常容易的掌握相关的知识,这套教程面向初学人员,共三册,十七章,都是我们在利用EXCEL工作过程中需要掌握的知识点,希望大家能掌握利用。

第五节 利用循环删除重复项

大家好,我们这讲讲解利用循环删除重复项的方法。在之前的讲解中,我曾经提过,循环是最强大的编程技术之一,如果不用VBA的循环,在工作表中只能用迭代,但迭代的方案会大大降低工作表的功效,当行数较多时,这种运算速度是很难被我们认可的,而用了VBA中的循环可以避免这些问题。这讲我们讲利用循环处理删除重复项的操作。

1 应用场景介绍

如下面的工作表的A列,有一系列的数字,我们要在其中选择出不重复的项,回填到B列:

excel存在一个或多个循环如何删除,excel怎么把很多重复出现的删除(1)

这种回填工作,如果在工作表中处理该如何操作呢?

首选的最为有效的当然是“数据透视表”,这个功能是EXCEL自带的,只要我们选择上这列,然后做数据透视处理即可得到不重复的数据。

再者,可以用计数函数处理,例如我们录入下面公式:=COUNTIF($A$1:A1,"="&A1) 那么就可以求出A1单元格值的个数,然后我们筛选出个数为1的值即可求出不重复的值了。

但是工作表中的计算有着很大的局限性,无论是哪一种算法,面对大量的数据时是无能为力的。而且数据透视表是无法处理无标题行数据的。

我们今日讲解VBA的方法。

2 用循环判断法排重的思路分析

1)我们在B列的第一个单元格中放入A列的第一个数值。这个数值肯定是不重复的。

2)利用一个布尔型的变量作为一个判断数值,初始值为TRUE.

3) 从A列中的第二个单元格开始,每个数值和B列进行比较,如果有相同的那么就令上面的布尔变量值为FALSE.

4) 当A列的单元格循环结束后,如果那个布尔变量值仍为TRUE,那么就将这个A列的值写入B列,如果为FALSE,就不写入。

利用这种思路,我们就可以求出A列不重复的数值了,当然这种方法只是利用的思路之一,在VBA中可利用的方法非常多,对于排重而言,最为方便的当然是字典[1].当然,我们这讲的内容是循环,我们来看下面的代码及分析。

3 实现用循环判断法排重的代码及代码解读

下面看我的代码:

Sub mynzE() '删除重复项

Dim myZJ As Boolean

Sheets("sheet5").Select

Columns("B").Clear

Cells(1, 2).Value = Cells(1, 1).Value

k = 1

i = 1

Do While Cells(i, 1) <> ""

Cells(i, 1).Select

myZJ = True

For j = 1 To k

If Cells(i, 1).Value = Cells(j, 2).Value Then

myZJ = False

End If

Next

If myZJ = True Then

Cells(k 1, 2).Value = Cells(i, 1).Value

k = k 1

End If

myZJ = True

i = i 1

Loop

MsgBox ("OK!")

End Sub

代码截图:

excel存在一个或多个循环如何删除,excel怎么把很多重复出现的删除(2)

代码解读:

1)Cells(1, 2).Value = Cells(1, 1).Value 先写入第一个数值

2) Do While Cells(i, 1) <> "" 在A列建立一个循环

3)myZJ = True 这个变量就是写入B列数据的开关,初始值是True

4)For j = 1 To k

If Cells(i, 1).Value = Cells(j, 2).Value Then

myZJ = False

End If

Next

以上代码在B列建立了一个循环,用以判断是否有值和Cells(i, 1)单元格的值相同,如果有那么myZJ = False

5) If myZJ = True Then

Cells(k 1, 2).Value = Cells(i, 1).Value

k = k 1

End If

如果myZJ = True,那么将A列的数值写入B列。

4 实现用循环判断法排重的代码实现效果。

我们看一下代码的运行效果,

excel存在一个或多个循环如何删除,excel怎么把很多重复出现的删除(3)

我们添加几个数据再次运行:

excel存在一个或多个循环如何删除,excel怎么把很多重复出现的删除(4)

注释:[1] 关于字典排重,大家可以参考我的第三套教程《VBA数组与字典解决方案》,是对字典的详细讲解。

今日内容回向:

1) 循环比较数据排重的思路是怎样的?

2) 你还有哪些方法可以利用实现数据排重?

excel存在一个或多个循环如何删除,excel怎么把很多重复出现的删除(5)

本讲内容参考程序文件:工作簿07.xlsm

分享成果,随喜正能量

VBA的应用及学习方法:

VBA是利用Office实现个人小型办公自动化的有效手段(工具)。这是我对VBA的应用界定。在取代OFFICE新的办公软件没有到来之前,谁能在数据处理方面做到极致,谁就是王者。其中登峰至极的技能非VBA莫属!

我记得20年前自己初学VBA时,那时的资料甚少,只能看源码自己琢磨,真的很难。20年过去了,为了不让学习VBA的朋友重复我之前的经历,我根据自己多年VBA实际利用经验,推出了七部VBA专门教程。

第一套:VBA代码解决方案 是VBA中各个知识点的讲解,教程共147讲,覆盖绝大多数的VBA知识点,提供的程序文件更是一座不可多得的代码宝库,是初学及中级人员必备教程;目前这套教程提供的版本是修订第二版,程序文件通过32位和64位两种OFFICE系统测试。

第二套:VBA数据库解决方案 数据库是数据处理的专业利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,适合中级人员的学习。目前这套教程提供的是修订第一版教程,程序文件通过32位和64位两种OFFICE系统测试。

第三套:VBA数组与字典解决方案 数组和字典是VBA的精华,字典是VBA代码水平提高的有效手段,值得深入的学习,是初级及中级人员代码精进的手段。目前这套教程提供的版本是修订第一版,程序文件通过32位和64位两种OFFICE系统测试。

第四套:VBA代码解决方案之视频 是专门面向初学者的视频讲解,可以快速入门,更快的掌握这门技能。这套教程是第一套教程(修订一版)的视频讲解,视频更易接受。

第五套:VBA中类的解读和利用是一部高级教程,讲解类的虚无与肉身的度化,类的利用虽然较少,但仔细的学习可以促进自己VBA理论的提高。这套教程的领会主要是读者的领悟了,领悟一种佛学的哲理。目前这套教程提供的版本是修订第一版,程序文件通过32位和64位两种OFFICE系统测试。

第六套教程:VBA信息获取与处理,是一部高级教程,涉及范围更广,实用性更强,面向中高级人员。教程共二十个专题,包括:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪切板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。

第七套教程:VBA之EXCEL应用 这是一部初级教程这部教程共三册,从从创建宏、对话框、工作簿和工作表对象、单元格对象等基础内容讲起,到循环结构、错误处理、字符串操作、日期和时间、事件、数组应用,函数过程等方面,一直讲解到控件和窗体对象的应用都是我们提高自己EXCEL水平的必须。

以上各教程学习顺序:7→1(或者4)→3→2→6→5。其中第四套是对第一套的视频讲解,所以第一和第四只选其一即可。

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.