Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel中的SQL-WHERE类型公式_Excel_Vba - Fatal编程技术网

Excel中的SQL-WHERE类型公式

Excel中的SQL-WHERE类型公式,excel,vba,Excel,Vba,比如说,我有一个包含Customer列的工作表和一个包含大量数据行的CreatedDate。任何知道如何通过VBA或公式设置第二个工作表的人,该工作表根据特定的where语句显示第一个工作表中的行,即本月创建的客户的所有行。类似于选择。。。其中,对SQL数据库进行查询 谢谢/Niels你可以用你的数据创建一个数据透视表,然后用很多方法对其进行切片。你可以用你的数据创建一个数据透视表,然后用很多方法对其进行切片。没有一个与SQL select完全相同的方法。。。这里是Excel中的函数,但请看一下

比如说,我有一个包含Customer列的工作表和一个包含大量数据行的CreatedDate。任何知道如何通过VBA或公式设置第二个工作表的人,该工作表根据特定的where语句显示第一个工作表中的行,即本月创建的客户的所有行。类似于选择。。。其中,对SQL数据库进行查询


谢谢/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->获取外部数据?