【ExcelVBA公開模試】リストを出力するときはClearContentsを忘れずに
文法を無視して、とりあえず動けばいいという邪道ExcelVBA講座こと「速読VBA単語」に準拠した問題を出題します。
問題
セル範囲C2:C101に「A」「B」「O」「AB」の文字がランダムに入力されている(図1)。ExcelVBAを用いて、セルA2に入力した血液型の人をF2以降に抽出したい。次の処理をそれぞれ実行しなさい。
(1)セルA2に「A」と入力して抽出しなさい(図2)。
(2)さらに「AB」にして、もう一度抽出しなさい(図3)。
<図1>
<図2>
<図3>
わえなび式 正解例
(このページの下にあります)
目標回答時間
プロ2分以内、アマチュア10分以内に処理ができたら合格
この問題の出題範囲
「速読VBA単語」Program3-4まで
ご案内
ExcelVBAをなんとなく理解できればいいという初心者のための「速読VBA単語」を受講希望の方はカリキュラムをご覧ください。
これは不正解!!
セル範囲Range("A2")をFor文で100回参照するのは不適切です。また、下の図のように、抽出される人数によっては、直前に抽出した結果が残ることがあります。
Sub moshi()
cnt = 0
For i = 2 To 101
If Cells(i, 3) = Range("A2") Then
cnt = cnt + 1
Cells(cnt + 1, 6) = Cells(i, 3)
Cells(cnt + 1, 7) = Cells(i, 4)
End If
Next
End Sub
正解例
もう一度抽出する場合は事前にリスト範囲(考えられる最大の範囲)の文字を消します。
Sub moshi()
Range("F2:G101").ClearContents
cnt = 0
blood = Range("A2")
For i = 2 To 101
If Cells(i, 3) = blood Then
cnt = cnt + 1
Cells(cnt + 1, 6) = blood
Cells(cnt + 1, 7) = Cells(i, 4)
End If
Next
End Sub
別解
cntの初期値やcnt=cnt+1の位置が違うパターンもあります。
Sub moshi()
Range("F2:G101").ClearContents
cnt = 2
blood = Range("A2")
For i = 2 To 101
If Cells(i, 3) = blood Then
Cells(cnt, 6) = blood
Cells(cnt, 7) = Cells(i, 4)
cnt = cnt + 1
End If
Next
End Sub
バックナンバー
この記事が気に入ったらサポートをしてみませんか?