永发信息网

将excel公式VLOOKUP改为VBA语言

答案:5  悬赏:10  手机版
解决时间 2021-03-27 13:15
  • 提问者网友:心如荒岛囚我终老
  • 2021-03-27 01:16
将excel公式VLOOKUP改为VBA语言
最佳答案
  • 五星知识达人网友:渊鱼
  • 2021-03-27 02:29
在VBA中没法用VLOOKUP的这数组写法

Sub 查找()
    Set s1 = Sheet1
    Set d = CreateObject("scripting.dictionary")
    For i = 1 To s1.[f65536].End(3).Row
        d(s1.Range("c" & i).Value & s1.Range("e" & i).Value & s1.Range("d" & i).Value) = s1.Range("f" & i)
    Next
    Range("a1") = d([b5] & [c4] & [c3])    '结果放在A1单元格
    Set d = Nothing
End Sub
全部回答
  • 1楼网友:鸠书
  • 2021-03-27 07:26
点击录制宏 粘贴你的公式 按确定 停止录制 进去看就是你要的vb语言了追问这样出来的单元格里面还是公式,我要的是非公式的结果
  • 2楼网友:撞了怀
  • 2021-03-27 05:54
最简单的方法是作为工作表函数进行引用
a=Application.WorksheetFunction.vlookup(xxxxxx)追问主要问题是其中的if({1,0}怎么处理。
希望能详细解答 :
.Cells(5, 4) = Application.WorksheetFunction.VLookup _
(.Range("B5") &```, if({1,0}Sheet1.Range("E:E") & ``,Sheet1.Range("H:H"), 2,false)
这样if是有问题追答理论上不需要处理。
另外,另外两位朋友的答案,虽然代码量比较大,但执行起来,速度还是要高于函数的。在速度方面不用担心。
  • 3楼网友:零点过十分
  • 2021-03-27 04:16
For i = 1 To 65536
With Sheets("Sheet1")
If .Cells(i, "E") & .Cells(i, "G") & .Cells(i, "F") = .Cells(5, "B") & .Cells(4, "C") & .Cells(3, "C") Then
MsgBox .Cells(i, "H")
End If
End With
Next追问这样循环会使得数据过于庞大,处理起来熟读太慢,因为需要查找的数据好几百条,数据库又有几千条,太慢,实用性太低,有没有比别的方法呢追答对于几百、几千条数据处理,用循环速度不会太慢的。
现在不知道你的具体需求是什么,输出结果放置区域怎么设置。
  • 4楼网友:酒安江南
  • 2021-03-27 03:18
Sub 同步多条件查找()
Rem 在I1返回查找结果
Dim rng As Range
For Each rng In Intersect(UsedRange, Range("H:H"))
If rng.Offset(, -3) = Range("B5") And rng.Offset(, -1) = Range("C4") And rng.Offset(, -2) = Range("C3") Then
Range("I1") = rng
Exit For
End If
Next
End Sub追问您好,谢谢,不过这样处理起来会不会很慢,因为需要查找的数据好几百条,数据库又有几千条,太慢,实用性太低,有没有比别的方法呢
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯