vba - IF & vlookup 在不同的工作表中查找
问题描述
我有下面的代码,它也可以完成我需要的工作。它检查 D 列以查看该值是否大于 200,如果是,则在 sheet2 中查找相应的值。但是,由于循环,我的方法需要很长时间才能加载。任何人都可以帮助我更快地编写代码或采用不同的方法吗?谢谢
Private Sub CommandButton1_Click()
Dim vlookup As Variant
Dim lastRow1 As Long, lastRow2 As Long
Dim ws1 As Worksheet, ws2 As Worksheet
Dim i As Long
Set ws1 = Sheets("Sheet1")
lastRow1 = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row
Set ws2 = Sheets("Sheet2")
lastRow2 = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Row
For i = 4 To lastRow1
If Cells(i, "D") > 200 Then
With ws1.Range("g4:g" & lastRow1)
.Formula = "=iferror(vlookup(a4, " & ws2.Range("a2:b" & lastRow2).Address(1, 1, external:=True) & ", 2, false), text(,))"
.value = .value
End With
Else
Cells(i, "g") = "Not found"
End If
Next i
End Sub
解决方案
将公式放入g4并复制下来
ws1.Range("g4").formula = "=iferror(vlookup(a4, " & ws2.Range("a2:b" & lastRow2).Address(1, 1, external:=True) & ", 2, false), text(,))"
ws1.Range("g4").copy ws1.Range("g4:G" & lastrow1
推荐阅读
- html - CSS和元素的高度
- bigcommerce - PrintInvoice 全局变量 - BigCommerce
- javascript - 导入语句如何在没有指定导入语句中的路径信息的情况下做出反应,因为模块导入不能有裸路径
- javascript - 文本框不会改变javascript中的颜色
- xcode - 当我进入一个新的 viewController 时打开两次
- ruby-on-rails - ActiveRecord 通过两个关联加入
- bash - 为什么 ls -lSh 命令返回非常小的文件大小?
- c++ - 查找地图 C++ 中出现的次数
- javascript - 在javascript中“或”布尔值列表的最短方法
- html - 为什么按钮边框不会比#f0f0f0 更亮?