- 締切済み
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 やりたいことの説明が下手で申し訳ありませんが、よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- piroin654
- ベストアンサー率75% (692/917)
効率のわるい書き方だったので、以下に訂正。 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)
勘違いがありました。以下に。 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)
以下ではどうですか。 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