excel中两组数据对比
- 格式:docx
- 大小:7.22 KB
- 文档页数:3
55End If
56Next
57If Not Flg Then
58Cells(i, 3).Value = Cells(i, 1).Value
59End If
60If Not Flg2 Then
61Cells(i, 4).Value = Cells(i, 2).Value
62End பைடு நூலகம்f
1今天客服碰到的问题是Excel中双列需要交叉检测,对数据进行去重操作,客服在那里束手无策,最后到我这里,说实话,Excel表中如何操作,我也不是非常的懂,要重新学习Excel的复杂操作方法那是基本不可能。了解的Excel中是有宏,即VBA编程,所以最偷懒的办法就是发挥自身特长 —— 编程。还好,以前有VB的基础在,VBA应付起来应该不是很难。
45
46For i = MinRow To MaxRow
47Flg = False
48Flg2 = False
49For j = MinRow To MaxRow
50If Cells(i, 1).Value = Cells(j, 2).Value Then
51Flg = True
52End If
53If Cells(i, 2).Value = Cells(j, 1).Value Then
63Next
64
65
66End Sub
67事情到这里,用不太优雅的方式解决了 —— 主要是VBA不熟,自然没有优雅可言。重在提供实用功能,能解决问题的方法都是好方法
68
2410
2511
2612
2713
2814
2915
3016
3117
3218
3319
3420
3521
3622
3723
3824
3925
4026
41Sub Macro1()
42''' 提取非重复数据,并将第一列非重复数据存放到C列,第二列非重复数据存放到D列
43MinRow = 1
44MaxRow = edRange.Rows.Count
31
42
53
6'' 获取当前工作表的最大可用行数的两个方法
7MaxRow = edRange.Rows.Count
8MaxRow2 = Application.ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
9有了行数,要交叉做检测,自然就是对行数进行遍历,然后取出每行中需要的列值进行比较,也就是要取单元格值,单元格值方法比较多,这里就用一个简单的方法,用Cells(行,列)获取单元格对象,之后取Value值即可,查了帮助,Value是可读写的属性,因此赋值也一样可以用它。
2首先要解决的问题是VBA中的对象,要学,那也不是一时半会的,这个去重最根本的问题是两个,第一,找到数据表中的最大可用行数;第二,能够获取到单元格中的数据进行比较。能解决这两个问题,其他的应用基本的VB语法就能组合成需要的功能了。关于获取Sheet中的最大可用行数,可以有很多方法恶意使用。如下代码均可获取当前Sheet的最大可用行数:
101
112
12''' 对第一行第一列进行赋值,即(A1)
13Cells(1,1).Value = "AAABBC"
14当我们两个核心的问题都得到解决的时候,我们就简单的来按要求组织逻辑了,当然要求不同,逻辑也不同,根据客服的要求,我编写的代码如下:
151
162
173
184
195
206
217
228
239