ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2334|回复: 5

求助,如何用VBA/SQL做到函数Vlookup的功能

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-1-18 11:45 | 显示全部楼层 |阅读模式
在加工数据的时候,经常需要用到数据匹配,但是函数匹配非常慢,能不能用sql语句做到快速匹配呢?比如我需要将表1中的涅槃访问时间根据账户名匹配到表2中的涅槃访问时间,应该怎么做呢,代码应该怎么写?

大神帮忙.rar

15.34 KB, 下载次数: 12

TA的精华主题

TA的得分主题

发表于 2017-1-20 18:03 | 显示全部楼层
内置函数运行速度要比自定义函数快,没必要画蛇添足

TA的精华主题

TA的得分主题

发表于 2017-2-2 09:16 | 显示全部楼层
'SQL 方法
Sub MATCHDATA1()
Dim S As String

Dim CN As New ADODB.Connection
Dim RS As New ADODB.Recordset
S = "[" & Sheets(1).Name & "$]"
S1 = Sheets(1).Cells(1, 3)
With CN
.Provider = "MICROSOFT.ACE.OLEDB.12.0"
.ConnectionString = "EXTENDED PROPERTIES=EXCEL 8.0;" & "DATA SOURCE=" & ActiveWorkbook.FullName
.Open
End With

  For K = 2 To Sheets(2).Range("A1048576").End(xlUp).Row


SQ = "SELECT*FROM" & S & "WHERE " & S1 & "='" & Sheets(2).Cells(K, 1) & "'"


RS.Open SQ, CN, 3, 1
  If RS.RecordCount >= 1 Then
   Sheets(2).Cells(K, 2) = RS.Fields(3)
  End If
   Set RS = Nothing
Next K

CN.Close
Set CN = Nothing


End Sub

'另外一种方法
Sub MATCHDATA()

Dim SH1 As Object
Dim SH2 As Object
Set SH1 = Sheets(1)
Set SH2 = Sheets(2)
For K = 2 To SH1.Range("A1048576").End(xlUp).Row
For K1 = 2 To SH2.Range("A1048576").End(xlUp).Row
If SH1.Cells(K, 3) = SH2.Cells(K1, 1) Then
    SH2.Cells(K1, 2) = SH1.Cells(K, 4)
End If
Next K1
Next K


End Sub


表格123.rar

16.84 KB, 下载次数: 39

TA的精华主题

TA的得分主题

发表于 2017-2-26 19:47 来自手机 | 显示全部楼层
上面两种方案只是实现了效果,但是效率应该比较低。用sql一次查询还要按顺序比较麻烦,循环查又慢。个人觉得字典+数组才比较快。

TA的精华主题

TA的得分主题

发表于 2017-3-3 09:27 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2017-3-3 17:39 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-26 10:05 , Processed in 0.053809 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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