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

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

Column_1 | Column_2 | Column_3 ValueA ValueB ValueC .... 

我需要的是一个函数,将作为input的范围和类似SQL的查询string,并返回匹配查询的行范围,例如:

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

有这样的事情吗? 或者什么是实施自己的最佳方式?

谢谢

您可以使用位于Excel 2010“数据”选项卡中的“ Get External Data (尽pipe名称不同)来在工作簿中设置connection以查询来自其自身的数据。 使用From Other Sources From Microsoft Query连接到Excel

一旦设置VBA ,您可以使用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 

如果可以保存工作簿,则可以select使用ADO和Jet / ACE将工作簿视为数据库,然后对工作表执行SQL。

有关如何使用ADO命中Excel的MSDN信息可以在这里find。

有时SUM_IF可以完成工作。 假设您有一张产品信息,包括A列中的唯一productID和P列中的单价。以及A列中包含产品ID的一张采购订单条目,您希望列T计算条目的单位价格。

下面的公式将在单元格条目T2中执行,并可以复制到同一列中的其他单元格。

= SUMIF(产品!$ A $ 2:$ A $ 9999,参赛作品!$ A2,产品!$ P $ 2:$ 9999)

然后,您可以为每个条目添加另一个包含项目数的列,并将其与单位价格相乘,以获得条目的总成本。

如果要按执行SQL语句的函数在工作表上运行公式,请使用Add-in A-Tools

例子, function BS_SQL("SELECT ...")

在这里输入图像描述

一个快速的方法是创build一个列,其公式的计算结果为true,对于您关心的行,然后在该列中过滤TRUE值。