1. Home »
  2. エクセル練習問題:目次 »
  3. 日付関連の計算(VBA)

エクセル練習問題:日付関連の計算(VBA)


スポンサードリンク
(追記) (追記ここまで)

問題 topへ

解答例 topへ

問題1の解答例 topへ


B C D E F
2 年 月 日 和暦
3 2011 5 3 平成23年5月3日
4 2011 7 13 平成23年7月13日
5 2011 11 23 平成23年11月23日
  1. DateSerial関数を使って日付のシリアル値にし、表示形式で和暦を表示します。
    Sub test10()
    Dim i As Long
    For i = 3 To 5
    Cells(i, 6).Value = DateSerial(Cells(i, 2).Value, Cells(i, 3).Value, Cells(i, 4).Value)
    Cells(i, 6).NumberFormatLocal = "ggge年m月d日"
    Next i
    End Sub
  2. セルに日付形式の値を入れて、Excelが日付データとして自動でシリアル値の変換することを利用した例です。
    • 年/月/日 のような日付形式のデータが入力されると、Excelは日付データと認識してシリアル値に変換します。
    Sub test11()
    Dim i As Long
    For i = 3 To 5
    Cells(i, 6).Value = Cells(i, 2).Value & "/" & Cells(i, 3).Value & "/" & Cells(i, 4).Value
    Cells(i, 6).NumberFormatLocal = "ggge年m月d日"
    Next i
    End Sub
(追記) (追記ここまで)

問題2の解答例 topへ


B C
2 日付 曜日
3 2011年5月3日 火曜日
4 2011年7月13日 水曜日
5 2011年11月23日 水曜日
  1. WeekdayName関数、Weekday関数を使ってセルに曜日を入力します。
    • 構文:Weekday(date, [firstdayofweek])
      構文:WeekdayName(weekday, abbreviate, firstdayofweek)
      WeekdayName Weekday に説明がありますので参照してください。
    Sub test20()
    Dim i As Long
    For i = 3 To 5
    Cells(i, 3).Value = WeekdayName(Weekday(Cells(i, 2).Value))
    Next i
    End Sub
  2. Format関数で表示形式を使って曜日を表示する例です。
    • 構文:Format(expression[, format[, firstdayofweek[, firstweekofyear]]])
      Format関数 に説明がありますので参照してください。
    Sub test21()
    Dim i As Long
    For i = 3 To 5
    Cells(i, 4).Value = Format(Cells(i, 2).Value, "aaaa")
    Next i
    End Sub

問題3の解答例 topへ


B C D
2 日付 曜日 提出期限日
3 2011年6月10日 金 2011年6月13日
4 2011年7月5日 火 2011年7月11日
5 2011年8月8日 月 2011年8月15日
  1. 最大7日後の日付なので、元の日付に1づつ加え、Format関数で曜日を求め"月"となる日までループしています。
    "月"となった日付が求める日付になりますので、セルにその値を書き込み、ループから抜けています。
    Sub test30()
    Dim i As Long, j As Long
    For i = 3 To 5
    For j = 1 To 7
    If Format(Cells(i, 2).Value + j, "aaa") = "月" Then
    Cells(i, 4).Value = Cells(i, 2).Value + j
    Exit For
    End If
    Next j
    Next i
    End Sub
  2. Weekday関数で曜日を求め、その曜日に応じた日数を加えるという方法です。
    Sub test31()
    Dim i As Long, j As Long
    Dim d As Integer
    For i = 3 To 5
    Select Case Weekday(Cells(i, 2).Value)
    Case 1
    d = 1
    Case 2
    d = 7
    Case 3
    d = 6
    Case 4
    d = 5
    Case 5
    d = 4
    Case 6
    d = 3
    Case 7
    d = 2
    End Select
    Cells(i, 4).Value = Cells(i, 2).Value + d
    Next i
    End Sub
  3. Weekday関数で月曜日から開始したケースでは、8-Weekday(Cells(i, 2).Value, 2) を加えることで求めることができます。
    Sub test32()
    Dim i As Long, j As Long
    For i = 3 To 5
    Cells(i, 4).Value = Cells(i, 2).Value + 8 - Weekday(Cells(i, 2).Value, 2)
    Next i
    End Sub

スポンサードリンク
(追記) (追記ここまで)


(追記) (追記ここまで)
Home|エクセル練習問題:目次|日付関連の計算(VBA)

PageViewCounter
Counter
Since2006/2/27

AltStyle によって変換されたページ (->オリジナル) /