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

Column_1 | Column_2 | Column_3

ValueA       ValueB     ValueC
....

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

=SQL_SELECT(A1:C1000, "SELECT * WHERE Column_1 = ValueH AND Column_3 = blah")

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

推荐答案

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

设置好后,您可以使用VBA来操作connection,以查看和修改驱动查询的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

Sql相关问答推荐

基于时间的SQL聚合

如何连接第二个表并将其内容输入到第一个表的单个字段中?

有没有办法用SQL编写一条CASE语句,如果列A&>0,那么列B,列C=0

Select 起始参数和截止参数之间的间隔,包括与期间重叠的参数

为什么在postgres中,横向连接比相关子查询快?

OVER子句WITH PARTITION BY和ORDER BY忽略主查询的WHERE子句

SQL子查询返回多个值错误

如何隐藏聚合JSON数组元素的键

如何将我的联接数据放入每个用户每月多行的列中?

如何实现同一列的递归计算?

基于是否具有某些数据的关联表覆盖SELECT语句中的列值

如何为该查询编写正确分区依据

从JSON值数组创建扁平数组Athena

使用多个WITH子查询的替代方法

查找滑动窗口框架中的最大和最小列值

将 json 列键映射到第二个表中的匹配列值

错误:postgresql 中缺少表评级的 FROM 子句条目

计数时如何为所有时间间隔返回 0 而不是什么都不返回

检索具有相同位置的最小和最大store 数量

SQL 查询以填充单个列中的所有值