名称未設

【ExcelVBA公開模試】RANK関数を使わずに順位を求める

文法を無視して、とりあえず動けばいいという邪道ExcelVBA講座こと「速読VBA単語」に準拠した問題を出題します。

問題

セル範囲A1:A300に数値が入力されており、空白は無いものとする(図1)。この昇順の順位をB列に求めなさい(図2)。ただし、RANK関数を使ってはならない。

<図1>

<図2:完成イメージ>

わえなび式 正解例

(このページの下にあります)

目標回答時間

プロ3分以内、アマチュア10分以内に処理ができたら合格

この問題の出題範囲

「速読VBA単語」Program3-7まで

ご案内

ExcelVBAをなんとなく理解できればいいという初心者のための「速読VBA単語」を受講希望の方はカリキュラムをご覧ください。

正解例

全員の順位を「1」にして、総当たりで比較して小さいほうの順位を増やします。

Sub moshi()
    a = Range("A1:A300")
    ReDim rnk(1 To 300, 1 To 1)
    For i = 1 To 300
        rnk(i, 1) = 1
    Next
    For i = 1 To 299
        For j = i To 300
            If a(i, 1) < a(j, 1) Then
                rnk(i, 1) = rnk(i, 1) + 1
            ElseIf a(i, 1) > a(j, 1) Then
                rnk(j, 1) = rnk(j, 1) + 1
            End If
        Next
    Next
    Range("B1").Resize(300, 1) = rnk
End Sub

バックナンバー


この記事が気に入ったらサポートをしてみませんか?