2015-05-29 2 views
0

Так что я немного в пробке. Я хочу захватить кучу данных с помощью SQL и перечислить их на диаграмме Excel. Тем не менее, мне нужно перечислить его на сегодняшний день, например, так:Перемещение последовательно через диапазон дат

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

Получение данных достаточно легко, но мне нужно двигаться через диапазон дат (2015-05-19 до 2015-05-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 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 

Это то, что я придумал , и он работает хорошо.

Смежные вопросы