使用VBA在Excel中使用SQL风格的查询

我有一个大的Excel表单,看起来类似于这个:

date | name | age | type 10/10/2012 | James | 12 | man 11/10/2012 | Jane | 50 | woman 12/10/2012 | Freddy | 2 | dog 13/10/2012 | Bob | 23 | man 14/10/2012 | Mary | 34 | woman 

我想要做的是创build一个新的,dynamic生成的表格显示所有的人。

在SQL中,这将是一个同步: "SELECT * FROM table WHERE type='men'" 。 我以前从来没有在Excel中使用过VBA(我是一名经验丰富的PHP / Javascript程序员,并且在MS Access中使用了VBA),所以我正在寻找初学者的指导让我开始。 也许有人可以推荐一个简单的教程或博客文章,做我需要做的事情?

我花了大部分时间,但我已经明白了这一点。 代码如下:

 Sub Excel_QueryTable() Sheet2.Cells.ClearContents Dim oCn As ADODB.Connection Dim oRS As ADODB.Recordset Dim ConnString As String Dim SQL As String Dim qt As QueryTable ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\t.xlsm;Extended Properties=Excel 8.0;Persist Security Info=False" Set oCn = New ADODB.Connection oCn.ConnectionString = ConnString oCn.Open SQL = "Select * from [Sheet1$] WHERE type='man'" Set oRS = New ADODB.Recordset oRS.Source = SQL oRS.ActiveConnection = oCn oRS.Open Set qt = Worksheets(2).QueryTables.Add(Connection:=oRS, _ Destination:=Range("A1")) qt.Refresh If oRS.State <> adStateClosed Then oRS.Close End If If Not oRS Is Nothing Then Set oRS = Nothing If Not oCn Is Nothing Then Set oCn = Nothing End Sub 

要在自己的工作簿上实现这个function,您需要将Data Sourcepath更改为您正在使用的文件的名称。

查询中的[Sheet1$]是您正在select的工作表的名称(在$留下)。

Worksheets(2)是您创builddynamic表格的工作表编号。

此外,您需要通过转到Excel中的VBA编辑器中的Tools>References来启用Microsoft Active X Data Objects库之一。