查询ListObject VBA的快速方法

时间:2018-06-28 22:25:33

标签: excel-vba vba excel

我使用excel 2016,需要从列表对象获取值。有几列。例如第三,我需要在column1 = column3 = smth的列中获取值。我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

如果要在VBA中使用SQL语法和速度,则需要使用ADO DB连接器。以我的经验,它比使用本机Excel函数查找数据快4倍。

这是一个冗长的主题,需要您阅读多篇文章。信息远不止于一个SO职位。

这是示例文章: https://technet.microsoft.com/en-us/library/ee692882.aspx

这是该示例中的代码:

On Error Resume Next

Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H0001

Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")

objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=C:\Scripts\Test.xls;" & _
        "Extended Properties=""Excel 8.0;HDR=Yes;"";" 

objRecordset.Open "Select * FROM [Sheet1$] Where Number = 2", _
    objConnection, adOpenStatic, adLockOptimistic, adCmdText

Do Until objRecordset.EOF
    Wscript.Echo objRecordset.Fields.Item("Name"), _
        objRecordset.Fields.Item("Number")
    objRecordset.MoveNext
Loop