Excel中的SQL-WHERE类型公式
比如说,我有一个包含Customer列的工作表和一个包含大量数据行的CreatedDate。任何知道如何通过VBA或公式设置第二个工作表的人,该工作表根据特定的where语句显示第一个工作表中的行,即本月创建的客户的所有行。类似于选择。。。其中,对SQL数据库进行查询Excel中的SQL-WHERE类型公式,excel,vba,Excel,Vba,比如说,我有一个包含Customer列的工作表和一个包含大量数据行的CreatedDate。任何知道如何通过VBA或公式设置第二个工作表的人,该工作表根据特定的where语句显示第一个工作表中的行,即本月创建的客户的所有行。类似于选择。。。其中,对SQL数据库进行查询 谢谢/Niels你可以用你的数据创建一个数据透视表,然后用很多方法对其进行切片。你可以用你的数据创建一个数据透视表,然后用很多方法对其进行切片。没有一个与SQL select完全相同的方法。。。这里是Excel中的函数,但请看一下
谢谢/Niels你可以用你的数据创建一个数据透视表,然后用很多方法对其进行切片。你可以用你的数据创建一个数据透视表,然后用很多方法对其进行切片。没有一个与SQL select完全相同的方法。。。这里是Excel中的函数,但请看一下VLOOKUP函数。它可能就是你正在寻找的。如果没有足够的功能,您可能必须使用VBA:
Dim DataRange as Range
Dim RowNum as Integer
Dim NewRow as Integer
Dim TestMonth as Integer
Dim ThisMonth as Integer
Set DataRange = Range(Sheet1.Cells(1,1), Sheet1.Cells(100,2))
ThisMonth = Application.WorksheetFunction.Month(Application.WorksheetFunction.Today())
NewRow = 1
For RowNum from 1 to DataRange.Rows.Count
TestMonth = Application.WorksheetFunction.Month(DataRange.Cells(RowNum, 1).Value)
if TestMonth = ThisMonth Then
Sheet2.Cells(NewRow, 1).Value = DataRange.Cells(RowNum, 2).Value
NewRow = NewRow + 1
End If
Next RowNum
没有与SQL select完全等效的。。。这里是Excel中的函数,但请看一下VLOOKUP函数。它可能就是你正在寻找的。如果没有足够的功能,您可能必须使用VBA:
Dim DataRange as Range
Dim RowNum as Integer
Dim NewRow as Integer
Dim TestMonth as Integer
Dim ThisMonth as Integer
Set DataRange = Range(Sheet1.Cells(1,1), Sheet1.Cells(100,2))
ThisMonth = Application.WorksheetFunction.Month(Application.WorksheetFunction.Today())
NewRow = 1
For RowNum from 1 to DataRange.Rows.Count
TestMonth = Application.WorksheetFunction.Month(DataRange.Cells(RowNum, 1).Value)
if TestMonth = ThisMonth Then
Sheet2.Cells(NewRow, 1).Value = DataRange.Cells(RowNum, 2).Value
NewRow = NewRow + 1
End If
Next RowNum
您可以通过复制主数据表或使用a=Sheet1来创建主数据表的副本!A1型公式,然后使用自动筛选将其缩小到所需的行。您可以通过复制主数据表或使用a=Sheet1来创建主数据表的副本!A1型公式,然后使用自动筛选将其缩小到所需的行。以下是使用ADO的示例
Dim cn As Object
Dim rs As Object
strFile = Workbooks(1).FullName
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile _
& ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cn.Open strCon
strSQL = "SELECT * FROM [Sheet1$] WHERE CourseKey=484"
rs.Open strSQL, cn
Worksheets(2).Cells(2, 1).CopyFromRecordset rs
更多信息:下面是一个使用ADO的示例
Dim cn As Object
Dim rs As Object
strFile = Workbooks(1).FullName
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile _
& ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cn.Open strCon
strSQL = "SELECT * FROM [Sheet1$] WHERE CourseKey=484"
rs.Open strSQL, cn
Worksheets(2).Cells(2, 1).CopyFromRecordset rs
进一步信息:是否安装了Microsoft Query Data->获取外部数据?是否安装了Microsoft Query Data->获取外部数据?