2015-05-29 139 views
0

因此,我陷入了一片混乱。我想用SQL获取一堆数据并将其列在Excel图表上。不过,我需要按日期列出它,就像这样:在日期范围内顺序移动

Date | Data 
2015-05-19 |  62 
2015-05-20 |  30 
2015-05-21 |  78 

获取数据是很容易的,但我需要通过的日期范围移动(2015年5月19日至2015年5月21日,为例如),列出我拥有的每个日期,并根据这些日期对数据进行排序。因此,如果我具有上述日期范围,则需要依次移动该范围内的每个日期,并在我的Excel表格中列出当前值。

任何人都知道如何做这样的事情?对不起,如果没有很好的解释,我没有一个简单的时间来包裹我的头。

+0

为什么不在主页选项卡中使用“排序和过滤”功能? –

回答

1

这是使用ADODB和一个Access数据库,所以你可能需要改变的东西,以适应您的需求。全部在Sheet1模块中。

Sub test() 
    Dim cnn As ADODB.Connection 
    Dim rs As ADODB.Recordset 

    Set cnn = getConnection() 'however you create a connection 

    Set rs = cnn.Execute("SELECT YourDate, YourData FROM YourTable WHERE YourDate > #5/19/2015# AND YourDate < #5/21/2015# ORDER BY YourDate") 

    Me.Range("A2").CopyFromRecordset rs 'This doesn't include the fields names 
    rs.Close 
End Sub 
+0

谢谢,但这实际上并不是我所要求的。我发布了我自己实际提出的答案,但是非常感谢您回答。我感谢任何帮助,我可以得到。 – Alfabit

0

我居然发现一个答案。事实证明,你应该将号码添加到一个日期类型的值,它会被添加如一日,用简单的for循环允许我循环通过我的日期范围:

For DateIndex = 0 To daterange 
    'Add this date to the sheet 
    ActiveSheet.Cells(DateIndex + 2, 1).Value = Format(CDate(CateringForm.DateCB.Value) + DateIndex, "mmmm, dd yyyy") 
    For IDindex = 0 To IDNumber - 1 
     tempdate = CDate(CateringForm.DateCB.Value) + DateIndex 
     If (IDArray(IDindex, 3) = tempdate) Then 
      'MsgBox "Match" 
     End If 
    Next 
Next 

这是我想出了,它运作良好。