![名称未設](https://assets.st-note.com/production/uploads/images/9491111/rectangle_large_type_2_a75b54aef967e00540b64e9bd42fdaff.jpeg?width=1200)
【ExcelVBA公開模試】リストを2次元の表にする(その2)
文法を無視して、とりあえず動けばいいという邪道ExcelVBA講座こと「速読VBA単語」に準拠した問題を出題します。
問題
図1のように10チームによる総当たりのリーグ戦を行うことになった。1枚目のシートのA列にチーム名、1行目に略称が入力されている。また、2枚目のシートのA2:E46には総当たりの対戦カード45通りが入力されている(図2)。ExcelVBAを用いて各設問の処理を実行しなさい。
(1)図3のように得点を入力した。図4のように、勝ち=〇、引き分け=△、負け●として出力しなさい。
(2)〇を3点、△を1点として勝ち点を計算し、L2:L11に出力しなさい(図5)。
<図1>
<図2>
<図3>
<図4:設問(1)完成イメージ>
<図5:設問(2)完成イメージ>
わえなび式 正解例
(このページの下にあります)
目標回答時間
プロ1分以内、アマチュア10分以内に処理ができたら合格
この問題の出題範囲
「速読VBA単語」Program3-7まで
ご案内
ExcelVBAをなんとなく理解できればいいという初心者のための「速読VBA単語」を受講希望の方はカリキュラムをご覧ください。
正解例
Sub kakko1()
Dim hidari As Range
Dim migi As Range
team = Sheets(1).Range("B1:K1")
team_max = UBound(team, 2)
a = Sheets(2).Range("A2:E46")
For i = 1 To 45
If a(i, 2) <> "" Then
sa = a(i, 2) - a(i, 4)
tokuten1 = " " & a(i, 2) & "-" & a(i, 4)
tokuten2 = " " & a(i, 4) & "-" & a(i, 2)
For j = 1 To team_max
If a(i, 1) = team(1, j) Then
team1 = j + 1
ElseIf a(i, 5) = team(1, j) Then
team2 = j + 1
End If
Next
Set hidari = Sheets(1).Cells(team1, team2)
Set migi = Sheets(1).Cells(team2, team1)
If sa > 0 Then
hidari.Value = "〇" & tokuten1
migi.Value = "●" & tokuten2
ElseIf sa < 0 Then
hidari.Value = "●" & tokuten1
migi.Value = "〇" & tokuten2
Else
hidari.Value = "△" & tokuten1
migi.Value = "△" & tokuten2
End If
End If
Next
End Sub
Sub kakko2()
For i = 2 To 11
kachiten = 0
For j = 2 To 11
If Sheets(1).Cells(i, j) Like "*〇*" Then
kachiten = kachiten + 3
ElseIf Sheets(1).Cells(i, j) Like "*△*" Then
kachiten = kachiten + 1
End If
Next
Sheets(1).Cells(i, 12) = kachiten
Next
End Sub
バックナンバー
この記事が気に入ったらサポートをしてみませんか?