Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1455|回复: 4

求助用VBA实现的查询功能

[复制链接]
发表于 2022-12-2 13:56 | 显示全部楼层 |阅读模式
3学分
如何用VBA代码实现比 VLOOKUP函数还强大的查询功能,而且条件格式与VLOOKUP相同。
一个按钮,自动完成所有条件查询,可以多列或单列自动输出查询结果。

查询自动填充.zip

13.07 KB, 下载次数: 16

发表于 2022-12-17 23:17 | 显示全部楼层
FYI
测试了10W行

查询自动填充 的副本.zip

1006.42 KB, 下载次数: 35

回复

使用道具 举报

发表于 2022-12-18 10:50 | 显示全部楼层
本帖最后由 zjdh 于 2022-12-18 11:00 编辑

Sub TEST()
    Set dic = CreateObject("scripting.dictionary")
    arr = Sheets("数据表").Range("P1").CurrentRegion
    For i = 2 To UBound(arr)
        dic(arr(i, 2)) = Array(arr(i, 4), arr(i, 5), arr(i, 6), "", arr(i, 3))
    Next
    brr = Sheets("查询表").Range("D1:I" & Sheets("查询表").Range("D65536").End(3).Row)
    For i = 2 To UBound(brr)
        crr = dic(brr(i, 1))
        For J = 0 To UBound(crr)
            brr(i, J + 2) = crr(J)
    Next: Next
    Sheets("查询表").Range("D1").Resize(UBound(brr), 6) = brr
    MsgBox "查询完成!"
End Sub

回复

使用道具 举报

发表于 2022-12-18 17:07 | 显示全部楼层
本帖最后由 okjok 于 2022-12-18 17:08 编辑
zjdh 发表于 2022-12-18 10:50
Sub TEST()
    Set dic = CreateObject("scripting.dictionary")
    arr = Sheets("数据表").Range("P1 ...

老师好,请教个问题。看你的代码比我的简洁太多了,我测试了10W行的数据,为啥你的代码要比我的多出一秒的时间?谢谢!

回复

使用道具 举报

发表于 2022-12-18 21:51 | 显示全部楼层
本帖最后由 zjdh 于 2022-12-18 21:54 编辑

我用你的附件测试过,用时差不多:
DH.gif
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-29 23:20 , Processed in 0.359372 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表