您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页excel中两组数据对比

excel中两组数据对比

来源:筏尚旅游网
1 2 今天客服碰到的问题是Excel中双列需要交叉检测,对数据进行去重操作,客服在那里束手无策,最后到我这里,说实话,Excel表中如何操作,我也不是非常的懂,要重新学习Excel的复杂操作方法那是基本不可能。了解的Excel中是有宏,即VBA编程,所以最偷懒的办法就是发挥自身特长 —— 编程。还好,以前有VB的基础在,VBA应付起来应该不是很难。 首先要解决的问题是VBA中的对象,要学,那也不是一时半会的,这个去重最根本的问题是两个,第一,找到数据表中的最大可用行数;第二,能够获取到单元格中的数据进行比较。能解决这两个问题,其他的应用基本的VB语法就能组合成需要的功能了。关于获取Sheet中的最大可用行数,可以有很多方法恶意使用。如下代码均可获取当前Sheet的最大可用行数: 3 4 5 1 2 3 '' 获取当前工作表的最大可用行数的两个方法 7 MaxRow = ActiveSheet.UsedRange.Rows.Count 8 MaxRow2 = Application.ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row 6 有了行数,要交叉做检测,自然就是对行数进行遍历,然后取出每行中需要的列值进行比较,也就是要取单元格值,单元格值方法比较多,这里就用一个简单的方法,用Cells(行,列)获取单元格对象,之后取Value值即可,查了帮助,Value是可读写的属性,因此赋值也一样可以用它。 9 10 1 11 2 12 ''' 对第一行第一列进行赋值,即(A1) 13 Cells(1,1).Value = \"AAABBC\" 当我们两个核心的问题都得到解决的时候,我们就简单的来

按要求组织逻辑了,当然要求不同,逻辑也不同,根据客服的要求,我编写的代码如下:

15 1 16 2 17 3 18 4 19 5 20 6 21 7 22 8 23 9 24 10 25 11 26 12 27 13 28 14 29 15 30 16 31 17 32 18 33 19 34 20 35 21 36 22 37 23 38 24 39 25 40 26

41 Sub Macro1()

42 ''' 提取非重复数

14

据,并将第一列非重复数据存放到C列,第二列非重复数据存放到D列

43 MinRow = 1 44 MaxRow =

ActiveSheet.UsedRange.Rows.Count

45

46 For i = MinRow To MaxRow

47 Flg = False 48 Flg2 = False 49 For j = MinRow To MaxRow

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

51 Flg = True

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

54 Flg2 = True

55 End If 56 Next

57 If Not Flg

Then 58 Cells(i, 3).Value = Cells(i, 1).Value 59 End If 60 If Not Flg2 Then 61 Cells(i, 4).Value = Cells(i, 2).Value 62 End If 63 Next 64 65 66 End Sub 事情到这里,用不太优雅的方式解决了 —— 主要是VBA不熟,自然没有优雅可言。重在提供实用功能,能解决问题的方法都是好方法 68

67

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- efsc.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务