順位付け
自分より大きい値がいくつあるか
1. 単純全比較
Dim scoreList(4) As Integer
Dim rankList(4) As Integer
Dim i, j, rank As Integer
Call SetScoreListData(rankList)
For i = 0 To UBound(scoreList)
rank = 1
For j = 0 To UBound(scoreList)
If scoreList(i) < scoreList(j) Then
rank = rank + 1
End If
Next j
rankList(i) = rank
Next i
For i = 0 To UBound(scoreList)
Debug.Print scoreList(i) & "点 : " & rankList(i) & "位"
Next i
- 自分自身を含め、全ての要素と比較。
- 順位は必ず 1 から開始。
- 自分より大きい値を見つけるたびに順位を 1 増やす。
- 同点は同順位。
- 比較回数 n × n (n²)回。
- コードが単純。
📝データ 設定/出力
Sub SetScoreListData(ByRef rankList() As Integer)
scoreList(0) = 85
scoreList(1) = 92
scoreList(2) = 76
scoreList(3) = 92
scoreList(4) = 60
End Sub
85点 : 3位
92点 : 1位
76点 : 4位
92点 : 1位
60点 : 5位
2. 組合せ比較
Dim scoreList(4) As Integer
Dim rankList(4) As Integer
Dim i, j As Integer
Call SetScoreListData(rankList)
'全員1位で初期化
For i = 0 To UBound(rankList)
rankList(i) = 1
Next i
For i = 0 To UBound(scoreList) - 1
For j = i + 1 To UBound(scoreList)
If scoreList(i) < scoreList(j) Then
rankList(i) = rankList(i) + 1
ElseIf scoreList(i) > scoreList(j) Then
rankList(j) = rankList(j) + 1
End I
Next j
Next i
For i = 0 To UBound(scoreList)
Debug.Print scoreList(i) & "点 : " & rankList(i) & "位"
Next i
- 同じ組み合わせを二度比較しない。
- 初期値は全員1位。
- 比較回数 n(n-1)/2。
📝データ 設定/出力
Sub SetScoreListData(ByRef rankList() As Integer)
scoreList(0) = 85
scoreList(1) = 92
scoreList(2) = 76
scoreList(3) = 92
scoreList(4) = 60
End Sub
85点 : 3位
92点 : 1位
76点 : 4位
92点 : 1位
60点 : 5位
3. 過去問【4】
📦出力画面

📘 ダウンロード教材について
この教材は、全国商業高等学校協会の情報処理検定の過去問題をもとに作成された、
学習支援用のマクロ付きExcelファイルです。
- マクロは 売上集計や平均点の計算など、検定形式に沿った処理を行います。
- 外部との通信やファイル操作は一切行いません。
- 教育目的で無償提供しており、改変・再配布はご遠慮ください。
ご利用の際は、マクロを有効にする必要があります。学校のPCで使用する場合は、先生にご確認ください。
| ファイル名 | サイズ (KB) | ダウンロード |
|---|---|---|
| 第71回【4】問2.zip | 17 | |
| 第70回【4】問1.zip | 12 |