エクセル練習問題:条件の判定(VBA)


スポンサードリンク

問題    topへ

解答例    topへ

問題1の解答例    topへ


B C D E
2 名前 性別 得点 判定
3 相沢一郎 52 ×
4 井上浩二 74
5 上野有紀 84
6 内野武 77
7 上田祥子 68 ×
8 江田早苗 59 ×
9 榎本高貴 77
10 小田和樹 47 ×

問題2の解答例    topへ


B C D E
2 名前 性別 得点 判定
3 相沢一郎 52
4 井上浩二 74
5 上野有紀 84
6 内野武 77
7 上田祥子 68
8 江田早苗 59
9 榎本高貴 77
10 小田和樹 47
  1. Select Case ステートメント で条件分けした例です。
    Sub test11()
      Dim c As Range
      Dim mark As String
        For Each c In Range("D3:D10")
          Select Case c.Value
            Case Is >= 80
              mark = "優"
            Case Is >= 70
              mark = "良"
            Case Is >= 50
              mark = "可"
            Case Else
              mark = "不"
          End Select
          c.Offset(0, 1).Value = mark
        Next c
    End Sub
  2. If〜Then〜Else ステートメント で条件分けした例です。
    Sub test11a()
      Dim c As Range
      Dim mark As String
        For Each c In Range("D3:D10")
          If c.Value >= 80 Then
            mark = "優"
          ElseIf c.Value >= 70 Then
            mark = "良"
          ElseIf c.Value >= 50 Then
            mark = "可"
          Else
            mark = "不"
          End If

          c.Offset(0, 1).Value = mark
        Next c
    End Sub

問題3の解答例    topへ


B C D
2 試験日 得点 判定
3 2011/7/1 66
4 2011/7/2 71 合格
5 2011/8/4 78
6 2011/8/5 69
7 2011/8/6 84 合格
8 2011/8/7 79
9 2011/9/1 72 合格
10 2011/9/2 68
  1. Select Case ステートメント で条件分けした例です。
    • このコードはほかの年のデータは無いものとしています。
      複数年のデータでは異なる条件を作ります。→複数年のケース
    Sub test12()
      Dim c As Range
      Dim mark As String
        For Each c In Range("B3:B10")
          Select Case Month(c.Value)
            Case 7, 9
              If c.Offset(0, 1).Value >= 70 Then
                mark = "合格"
              Else
                mark = ""
              End If
            Case 8
              If c.Offset(0, 1).Value >= 80 Then
                mark = "合格"
              Else
                mark = ""
              End If
            Case Else
              mark = ""
          End Select
          c.Offset(0, 2).Value = mark
        Next c
    End Sub
  2. 上記と同じ処理ですが、以下のように記述することもできます。
    Sub test13()
      Dim c As Range
      Dim mark As String
        For Each c In Range("B3:B10")
          mark = ""
          Select Case Month(c.Value)
            Case 7, 9
              If c.Offset(0, 1).Value >= 70 Then mark = "合格"
            Case 8
              If c.Offset(0, 1).Value >= 80 Then mark = "合格"
          Case Else
        End Select
        c.Offset(0, 2).Value = mark
      Next c
    End Sub
  3. 複数年のケースです。
    Sub test14()
      Dim c As Range
      Dim mark As String
      Dim jyouken

        For Each c In Range("B3:B10")
          jyouken = Year(c.Value) & "_" & Month(c.Value)
          mark = ""
          If (jyouken = "2011_7" Or jyouken = "2011_9") And c.Offset(0, 1).Value >= 70 Then
            mark = "合格"
          ElseIf jyouken = "2011_8" And c.Offset(0, 1).Value >= 80 Then
            mark = "合格"
          End If
          c.Offset(0, 2).Value = mark
        Next c
    End Sub

スポンサードリンク



よねさんのExcelとWordの使い方エクセル練習問題:目次|条件の判定(VBA)