VBA。同一个工作表,获取sheet1的A列数据,逐个在sheet2中检索,如果能搜索到,搜索到的 20
VBA。同一个工作表,获取sheet1的A列数据,逐个在sheet2中检索,如果能搜索到,搜索到的单元格标识成绿色。需要注意的是,可能会搜到不止一个单元格。...
VBA。同一个工作表,获取sheet1的A列数据,逐个在sheet2中检索,如果能搜索到,搜索到的单元格标识成绿色。需要注意的是,可能会搜到不止一个单元格。
展开
2个回答
展开全部
要是搜寻整个表格的话建议你不要用VBA来实现,实在是太慢了。
我刚刚试了一下仅仅只在sheet2的A列中搜寻sheet1中A列的所有表格,结果卡死了。
要是在小范围内则没有问题,亲测通过。
要是知道你的数据类型可能会快一些,因为怕数据中有字符所以用了一个笨方法来循环,这个可以针对任何数据,字符也好数字也好。
如果你对你电脑足够自信也可以把"A1:A100" 改为"A:A",反正我CPU是I7 4770 8G的内存都卡死了。
程序如下
Sub comp()
Dim I, J, K As Integer
Dim a, b As String
For Each rng1 In Worksheets(1).Range("A1:A100") '要是手动选择范围把
'Worksheets(1).Range("A1:A100")改为application.inputbox("选择比较数据区域",type:=8)
a = rng1.Value
If Len(Trim(a)) = 0 Then GoTo 10
For Each rng2 In Worksheets(2).Range("A1:A100") '要是手动选择范围则同上
b = rng2.Value
If Len(Trim(a)) = Len(Trim(b)) Then
For I = 1 To Len(Trim(a))
If Mid(a, I, 1) <> Mid(b, I, 1) Then GoTo 20
Next I
rng2.Interior.Color = 5287936
End If
20 Next
10 Next
End Sub
我刚刚试了一下仅仅只在sheet2的A列中搜寻sheet1中A列的所有表格,结果卡死了。
要是在小范围内则没有问题,亲测通过。
要是知道你的数据类型可能会快一些,因为怕数据中有字符所以用了一个笨方法来循环,这个可以针对任何数据,字符也好数字也好。
如果你对你电脑足够自信也可以把"A1:A100" 改为"A:A",反正我CPU是I7 4770 8G的内存都卡死了。
程序如下
Sub comp()
Dim I, J, K As Integer
Dim a, b As String
For Each rng1 In Worksheets(1).Range("A1:A100") '要是手动选择范围把
'Worksheets(1).Range("A1:A100")改为application.inputbox("选择比较数据区域",type:=8)
a = rng1.Value
If Len(Trim(a)) = 0 Then GoTo 10
For Each rng2 In Worksheets(2).Range("A1:A100") '要是手动选择范围则同上
b = rng2.Value
If Len(Trim(a)) = Len(Trim(b)) Then
For I = 1 To Len(Trim(a))
If Mid(a, I, 1) <> Mid(b, I, 1) Then GoTo 20
Next I
rng2.Interior.Color = 5287936
End If
20 Next
10 Next
End Sub
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询