• 締切済み

ExcelVBAで5分間隔の一覧を表示する

下記のようなプログラムを作成したいのですが、良い方法が思い付きません。 申し訳ありませんが、アドバイスをお願いいたします。 入力内容 セルA1:期間の開始(YYYY/MM/DD HH:MM) セルB1:期間の終了(同上) やりたいこと 期間の開始から終了までを5分間隔で一覧で表示。 (表示形式はYYYY/MM/DD HH:MM) このとき、開始と終了に時間がありますが、毎日同じ時間帯だけ表示したいです。 (2011/10/01 10:00 ~ 2011/10/03 12:00のとき、1日の10時~3日の12時ではなく、1日~3日の毎日10時~12時) イメージ  入力内容  A1:2011/10/01 10:00  B1:2011/10/03 12:00  出力内容  2011/10/01 10:00  2011/10/01 10:05  2011/10/01 10:10      ・      ・      ・  2011/10/01 11:55  2011/10/01 12:00  2011/10/02 10:00  2011/10/02 10:05      ・      ・      ・  2011/10/03 12:00 やりたいことの説明が下手で申し訳ありませんが、よろしくお願いいたします。

みんなの回答

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

効率のわるい書き方だったので、以下に訂正。 Sub test() Dim i As Long Dim j As Long Dim ds As Date Dim dStart As String Dim dEnd As String dStart = CDate(ThisWorkbook.Worksheets("sheet1").Cells(1, 1)) dEnd = CDate(ThisWorkbook.Worksheets("sheet1").Cells(1, 2)) ds = DateDiff("n", dStart, dEnd) j = ds / 5 '二行目へ ThisWorkbook.Worksheets("sheet1").Cells(2, 1) = dStart '三行目から For i = 1 To j dStart = DateTime.DateAdd("n", 5, dStart) ThisWorkbook.Worksheets("sheet1").Cells(i + 2, 1) = Format(dStart, "YYYY/MM/DD HH:MM") Next i End Sub

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

勘違いがありました。以下に。 Sub test() Dim i As Long Dim j As Long Dim ds As Date Dim dStart As String Dim dEnd As String dStart = CDate(ThisWorkbook.Worksheets("sheet1").Cells(1, 1)) dEnd = CDate(ThisWorkbook.Worksheets("sheet1").Cells(1, 2)) ds = DateDiff("n", dStart, dEnd) j = ds / 5 For i = 0 To j - 1 dStart = DateTime.DateAdd("n", 5, dStart) ThisWorkbook.Worksheets("sheet1").Cells(2, 1) = CDate(ThisWorkbook.Worksheets("sheet1").Cells(1, 1)) ThisWorkbook.Worksheets("sheet1").Cells(i + 3, 1) = Format(dStart, "YYYY/MM/DD HH:MM") Next i End Sub

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

以下ではどうですか。 Sub test() Dim i As Long Dim ds As Date Dim dStart As String Dim dEnd As String dStart = CDate(ThisWorkbook.Worksheets("sheet1").Cells(1, 1)) dEnd = CDate(ThisWorkbook.Worksheets("sheet1").Cells(1, 2)) ds = DateDiff("n", dStart, dEnd) i = ds / 5 For i = 0 To 5 dStart = DateTime.DateAdd("n", 5 * i, dStart) ThisWorkbook.Worksheets("sheet1").Cells(i + 2, 1) = Format(dStart, "YYYY/MM/DD HH:MM") Next i End Sub