すー's portfolios

プログラムはやったことがありませんでしたが、訓練を通してプログラミングを学び、Webアプリを作成することができました。

Excel VBAで試合順を自動作成

【Excel VBA】バレーボールの総当たり試合順を自動作成!スポーツ少年団を応援!

こんにちは、みなさん!

今日は、VBAを使った練習会の試合順を効率的に作成するエクセルをご紹介します。

同じ悩みを持つスポーツ少年団の保護者さんの参考になればうれしいです!

制作の背景

私にはバレーボールのスポーツ少年団に通う小学生の子供がいます。よく他のチームとの練習会があり、その試合順を組むことがあるのですが、めっちゃ面倒…。

毎回同じなら何も問題ないのですが、練習会ごとにチーム数が違えば、組み合わせ順も変わるんです。

さらに、近々公式試合があるからこの日の練習会ではこのチームとあのチームは当てないようにしたいといった要望まで!

めんどくさっと思っちゃいますよね。

ですので、試合順を作成する効率化を図るためこのエクセルを作成しました。練習会なので、総当たり形式、審判もチームが行う形式になっています。

プログラムの概要

このエクセルには「入力」シートと「テンプレート」シートが存在します。

「テンプレート」シートを作りたい試合順毎に増やしておき、「入力」シートから、チーム名入力程度の簡単な操作していくこと試合順を作成することができるようになっています。

「テンプレート」シート

数多ある練習会の形式に対応するため、事前にテンプレートを作成し、それを元にチームを当てはめていくようにしています。

例えばチーム数違いのテンプレートを事前に作成しておくことができるので、後から改めて試合順を考えるななくなります。

「入力」シート 作成ボタン

まず、「作成」について説明します。

早速ですが、「入力」シートの使い方です。このシートがすべての起点になります。

練習会の日付、使用するテンプレート、参加チームなどの情報を入力します。入力を終えたら、「作成」ボタンをクリックします。

すると、「全体」シートと各チームのシートが自動で作成されます。

かんたん〜♪

「全体」シートは体育館に掲示する用として作成されます。

各チームのシートはそれぞれのチームに渡す用として、わかりやすいようチーム名に色付けがされています。

プログラムのおおまかな動きとして、テンプレートシートをコピーし、アルファベットをチーム名に、「#日付」を練習会の日付に置換し、シート名を全体に変更します。

「全体」シートをチーム数分コピーし、対象のチーム名を塗りつぶし、シート名を対象のチーム名に変更します。

「テンプレート」シートを事前に用意しておくことでチーム数が変わっても対応できるようにしています。

「入力」シート 修正ボタン

次に、「修正」について説明します。

公式試合が近い場合など、「AチームとBチームは当たらないようにしたい」といった要望がでるときがあります。

このような一時的な変更に対応するのが「修正」です。

まず、作成ボタンでテンプレート通りの試合順を作成した後、「全体」シートを要望通りに変更します。

あとは「入力」シートに戻り、「修正」ボタンをクリックします。

すると、先ほど修正した「全体」シートをもとに、各チームのシートを自動で修正してくれます。

プログラムのおおまかな動きとして、各チームのシートを一度削除します。

そのあと、「全体」シートをチーム数分コピーし、対象のチーム名を塗りつぶし、シート名を対象のチーム名に変更します。

「入力」シート PDF出力ボタン

これらの作成したシートは簡単にPDFに出力することもできます。

事前に各チームへ試合順を連絡するような場合、チームごとのPDFを作成しメールやLINEで送ると思いますが、各チームのシートを1つずつPDFにするのが面倒ですよね。

このようなときは、「PDF出力 分割」をクリックします。

「全体」シート、各チームのシートをそれぞれPDFにすることができます。

もし、作成したシートを1つにまとめたPDFにしたいときは「PDF出力 一括」をクリックします。

「全体」シート、各チームのシートを1つのPDFにすることができます。

「入力」シート テンプレート反映ボタン

あ、テンプレートシートを増やした場合は「テンプレート反映」ボタンをクリックするのをお忘れなく。

このボタンを押さないと、コンボボックスに即時反映されないので注意です。

このエクセルの説明は以上になります。

おわりに

また、私はこのエクセルを練習会の試合順作成時に使うつもりで作成しています。

ですが、ほかの場面、基本はテンプレートに沿った作成が行えるが、よく修正がある場合など、でも活用できると考えます。

もし興味がありましたら作成を試みてください。

作成日:2024年06月29日

生徒のコメント

Excel VBAを使って総当たり試合順を自動で作成するエクセルを作ってみました。
小学生の子供がバレーボールをしているのですが、毎回練習会の試合順を作るのが面倒...
というわけで、テンプレートに合わせて、自動で試合順を作ってくれるようにエクセルを作成しました!

このエクセルでは
 ・テンプレートを複数持てるので、参加チーム数が変わっても即変更
 ・公式試合直前にありがちな試合組みNGにも後から対応可
 ・配布用にPDF出力もOK
ができるようになっています。
VBAはまだまだわからないことだらけではありますが、やりだすと楽しくて、あれもこれもと追加してしまいました(笑)