Excel VBA | 配列

VBA
スポンサーリンク

では、配列を使った練習問題をいくつか用意して、それぞれに解答例と解説をつけます。初心者が「配列+ループ」に慣れるためのステップアップ問題です。

問題1:最大値を求める

問題:
10個の整数を配列に入れて、その中で最大の値を求めて表示してください。

解答例

Sub FindMax()
    Dim nums(9) As Integer
    Dim i As Integer
    Dim maxVal As Integer

    ' データをセット(例:1~10)
    For i = 0 To 9
        nums(i) = i + 1
    Next i

    ' 初期値は最初の要素
    maxVal = nums(0)

    ' 最大値を探す
    For i = 1 To 9
        If nums(i) > maxVal Then
            maxVal = nums(i)
        End If
    Next i

    MsgBox "最大値は " & maxVal
End Sub
VB

解説

  • 最大値を探すときは「最初の要素」を基準にする。
  • ループで順番に比較し、より大きければ更新。
  • 最後に最大値を表示。

👉 ポイント: 初期値を0にすると、負の数が含まれる場合に誤動作するので注意。


問題2:文字列の逆順表示

問題:
文字列を配列に1文字ずつ格納し、逆順に並べて表示してください。

解答例

Sub ReverseString()
    Dim text As String
    Dim chars() As String
    Dim i As Integer
    Dim result As String

    text = "HELLO"
    ReDim chars(Len(text) - 1)

    ' 1文字ずつ配列に格納
    For i = 1 To Len(text)
        chars(i - 1) = Mid(text, i, 1)
    Next i

    ' 逆順に取り出す
    For i = UBound(chars) To LBound(chars) Step -1
        result = result & chars(i)
    Next i

    MsgBox result   ' OLLEH
End Sub
VB

解説

  • Mid関数で文字列を1文字ずつ取り出す。
  • 配列に格納してから逆順にループ。
  • UBoundLBoundを使うと柔軟に範囲を指定できる。

👉 ポイント: 文字列操作は配列を使うと「並べ替え」や「検索」がやりやすい。


問題3:平均点と合格判定

問題:
5人分の点数を配列に入れて、平均点を求め、さらに60点以上かどうかを判定してください。

解答例

Sub CheckScores()
    Dim scores(4) As Integer
    Dim i As Integer
    Dim sum As Integer
    Dim avg As Double

    ' データをセット
    scores(0) = 55
    scores(1) = 72
    scores(2) = 90
    scores(3) = 63
    scores(4) = 48

    ' 合計
    For i = 0 To 4
        sum = sum + scores(i)
    Next i

    ' 平均
    avg = sum / (UBound(scores) + 1)

    MsgBox "平均点は " & avg

    ' 合格判定
    For i = 0 To 4
        If scores(i) >= 60 Then
            MsgBox scores(i) & "点 → 合格"
        Else
            MsgBox scores(i) & "点 → 不合格"
        End If
    Next i
End Sub
VB

解説

  • UBound(scores) + 1 で要素数を求める。
  • 平均を計算して表示。
  • 各点数をループで判定し、合格/不合格を表示。

👉 ポイント: 配列+ループで「まとめて判定」が簡単にできる。


まとめ

  • 問題1: 最大値 → 初期値を最初の要素にして比較。
  • 問題2: 文字列逆順 → 配列に格納して逆ループ。
  • 問題3: 平均+判定 → UBoundで要素数を求め、ループで判定。

これらを練習すると「配列を使ってまとめて処理する」感覚が身につきます。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました