假设我有一个包含Customer和CreatedDate列的工作表,其中包含许多带数据的行。任何知道如何设置(通过VBA或公式)第二张表格的人,根据某些where语句显示第一张表格中的行,即客户“本月创建”的所有行。 (类似于select ...其中查询SQL数据库)。
谢谢! /尼尔斯
答案 0 :(得分:3)
您可以创建主数据表的副本(通过复制工作表,或使用横向和向下填充的=Sheet1!A1
类型公式),然后使用自动过滤器将其缩小到您需要的行
答案 1 :(得分:3)
以下是使用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
答案 2 :(得分:2)
您可以从数据中创建数据透视表,然后以很多方式切片。
答案 3 :(得分:0)
Excel中没有与SQL select ... where
功能完全等效的功能,但请查看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