我在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工作表中有一个较大的表:
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中“数据”选项卡中的“获取外部数据”(尽管它的名称如此),设置一个工作簿中的连接
,以从自身查询数据。使用来自其他源
和来自Microsoft Query
连接到Excel。
一旦设置好,您就可以使用VBA
操作连接
,以查看和修改驱动查询的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
一个快速的方法是创建一个列,其中包含一个公式,该公式对于您关心的行评估为true,然后在该列中过滤值为TRUE。
=SUMIF(Products!$A$2:$A$9999,Entries!$A2, Products!$P$2:$9999)
那么你可以添加另一列来显示每个条目的物品数量,并将其乘以单位价格以得出该条目的总费用。