Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 快速查询listobject vba的方法_Excel_Vba - Fatal编程技术网

Excel 快速查询listobject vba的方法

Excel 快速查询listobject vba的方法,excel,vba,Excel,Vba,我使用excel 2016,需要从列表对象中获取一个值。有几列。例如,3,我需要得到column1中的值,其中column2=smth,column3=smth。如何快速执行此操作?如果希望在VBA中使用SQL语法和速度,则需要使用ADO DB连接器。根据我的经验,它比使用原生Excel函数查找数据快4倍 这是一个冗长的主题,需要你阅读多篇文章。比一篇SO文章中应该包含的信息多得多 下面是一篇示例文章: 下面是该示例中的代码: Const adOpenStatic = 3 Const adLo

我使用excel 2016,需要从列表对象中获取一个值。有几列。例如,3,我需要得到column1中的值,其中column2=smth,column3=smth。如何快速执行此操作?

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

这是一个冗长的主题,需要你阅读多篇文章。比一篇SO文章中应该包含的信息多得多

下面是一篇示例文章:

下面是该示例中的代码:

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

objRecordset.Close
objConnection.Close

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

这是一个冗长的主题,需要你阅读多篇文章。比一篇SO文章中应该包含的信息多得多

下面是一篇示例文章:

下面是该示例中的代码:

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

objRecordset.Close
objConnection.Close

我不是100%肯定我理解这个问题。你是说像这样吗<代码>活动工作簿。工作表(“Sheet1”)。列表对象。项(1)。值其中1是对象@不,我不想找到ListObject。我想做一些类似sql
select where
query的事情,在特定ListObject的值中使用多个条件查询足够快吗?“你有没有尝试过一些太慢的东西?”Tim Williams我尝试过使用power query、match/index和pivot表。我有一个相当大的表要查找,(在我的版本中)这些方法工作得很慢,或者,在vba variablesMatch中有值之前,需要对工作表进行许多操作。匹配应该非常快-备选方案可能取决于表的大小以及需要执行的查找次数。我不能100%确定我是否理解这个问题。你是说像这样吗<代码>活动工作簿。工作表(“Sheet1”)。列表对象。项(1)。值其中1是对象@不,我不想找到ListObject。我想做一些类似sql
select where
query的事情,在特定ListObject的值中使用多个条件查询足够快吗?“你有没有尝试过一些太慢的东西?”Tim Williams我尝试过使用power query、match/index和pivot表。我有一个相当大的表要查找,而且(在我的版本中)这些方法的工作速度很慢,或者在我在vba variablesMatch中有值之前需要对工作表进行许多操作。匹配应该非常快—备选方案可能取决于表的大小和需要进行的查找次数。