名称未設

【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

バックナンバー


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