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值。