Excel函数在工作表数据上进行类似SQL的查询?

Ric*_*d H 54 sql excel vba function excel-vba

我在excel工作表中有一个较大的表:

Column_1 | Column_2 | Column_3

ValueA       ValueB     ValueC
....
Run Code Online (Sandbox Code Playgroud)

我需要的是一个函数,它将范围和类似SQL的查询字符串作为输入,并返回与查询匹配的行范围,例如:

=SQL_SELECT(A1:C1000, "SELECT * WHERE Column_1 = ValueH AND Column_3 = blah")
Run Code Online (Sandbox Code Playgroud)

这样的事情存在吗?或者什么是实现自己的最佳方式?

谢谢

chr*_*sen 48

您可以使用Get External Data(显示其名称)位于Excel 2010的"数据"选项卡中,connection在工作簿中设置a来查询自身的数据.使用From Other Sources From Microsoft Query连接到Excel

设置完成后,您可以使用VBAto来操作connectionto,以及查看和修改驱动查询的SQL命令.此查询确实引用了内存工作簿,因此不需要保存来刷新最新数据.

这是一个快速Sub演示访问连接对象

Sub DemoConnection()
    Dim c As Connections
    Dim wb As Workbook
    Dim i As Long
    Dim strSQL As String

    Set wb = ActiveWorkbook
    Set c = wb.Connections
    For i = 1 To c.Count
        ' Reresh the data
        c(i).Refresh 
        ' view the SQL query
        strSQL = c(i).ODBCConnection.CommandText
        MsgBox strSQL
    Next
End Sub
Run Code Online (Sandbox Code Playgroud)

  • 你能打勾这回答你的问题吗?理查德? (3认同)

Jon*_*ton 5

如果可以保存工作簿,则可以选择使用ADO和Jet/ACE将工作簿视为数据库,并对工作表执行SQL.

有关如何使用ADO命中Excel的MSDN信息可以在此处找到.