永发信息网

将excel公式VLOOKUP改为VBA语言

答案:5  悬赏:10  手机版
解决时间 2021-03-27 13:15
将excel公式VLOOKUP改为VBA语言
最佳答案
在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
全部回答
点击录制宏 粘贴你的公式 按确定 停止录制 进去看就是你要的vb语言了追问这样出来的单元格里面还是公式,我要的是非公式的结果
最简单的方法是作为工作表函数进行引用
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是有问题追答理论上不需要处理。
另外,另外两位朋友的答案,虽然代码量比较大,但执行起来,速度还是要高于函数的。在速度方面不用担心。
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追问这样循环会使得数据过于庞大,处理起来熟读太慢,因为需要查找的数据好几百条,数据库又有几千条,太慢,实用性太低,有没有比别的方法呢追答对于几百、几千条数据处理,用循环速度不会太慢的。
现在不知道你的具体需求是什么,输出结果放置区域怎么设置。
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追问您好,谢谢,不过这样处理起来会不会很慢,因为需要查找的数据好几百条,数据库又有几千条,太慢,实用性太低,有没有比别的方法呢
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
焦炉燃烧一立方焦炉煤气产生多少废气
求助 我家的黄油还能吃吗!
设A(0,a)是y轴上的一个定点,求A到抛物线x^
鲜小鲍鱼怎样烧才嫩香
微信上说100元帮忙刷1000个快手粉丝是真还是
以前大同九中语文老师王葆华现在身居何处?
放在自己考虑的范围之内指不放在心上不去管它
350,000平方米等于几平方千米
为什么女孩子喜欢穿紧身裤或者是包臀短裙,仅
大输液软袋用拆盘机叠盘机plc工作原理
缅甸的傣族的和国内的傣族是一个族吗
直流无刷电机(带霍尔)速度越快扭矩越大还是越
村里说我们不是国网的电又说要收钱买国网户?
雨帘潺潺的意思
从太谷到成都乘火车倒车最快的路线
推荐资讯
新风系统的噪音来源有哪些
梅花的象征
佛弟子你好
男人对女人动嘴,那叫哄! 动钱,那叫宠! 动
i7 4790K是自动超频还是自己设定
Environmentalists urged that more effectiv
作文笑为题
2014年挖矿显卡排行榜
织梦DEDECMS实现在线答题功能
八戒日付网是真的假的啊?
三星note 3显示型号为GT-N9000,请问是真的三
皇钻ktv地址好找么,我有些事要过去
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?