TOP > チーム分けツール > 制作秘話

***********************************************************************************************
                     チーム分けツール 制作秘話
                                           Copyright(C) 2021 by しげるがもげる
***********************************************************************************************

◆はじめに
 このドキュメントには、制作に関わっての作者の思いや苦労が書いてあります。
 技術的な細かいことに興味のない方は、読み飛ばしてください。
 エクセルでマクロを組んでみようかなと思われる方は、読むと参考になる部分があるかもしれません。


◆制作秘話
 運動会に向けて、赤白のチーム分けを考えていた。
 毎年、いつも行う作業で、この時もエクセルのシート上でドラッグ&ドロップで動かしていた。
 一応完成したので、きちんと清書して印刷したところ、問題点が見つかった。
 それで、また少し調整しなければいけなくなった。
 ほぼ、最初からやり直しである。
 「クリックするだけで、左右に分かれるようなものがあるといいなあ。」
 そう思って、これを作り始めました。
 一応完成してから、いろいろ考えていたら、バスケットボールのチーム決めのことを思い出した。
 これも、ほぼ毎年やっていることだ。 全部でだいたい6チーム決める。
 これも何とかしたい。
 そう思って、6チーム用(45人)を作りました。

 それから,数年経って,「90人までの対応にならないか。」という依頼があったので,
 10チーム用(100人)も作りました。

 それから,更に3年ほど経って,「20チームで上下2段が欲しい。」という依頼があったので,
 20チーム用(300人)も作りました。


◆工夫や苦労など
 <データ移動のさせ方>
  最初に考えたのは,紅白用だったので,データの移動は,操作性の簡単な『1クリックで平行移動』を基本としました。

  1.紅白用(2チーム)の場合
    2チームしかないので,移動させる場所は「こっちか,あっちか」の2者択一になります。
    つまり,データのあるなしに関わらず,2つの場所のデータを単純に入れ替えればできます。
    それで,移動させたいNoでも,移動先のNoでも,どちらをクリックしてもいい仕様になりました。
    ただし,そのままでは,完成した時に見にくいので,清書用のシートを用意しました。

  2.6チーム用
    6チームになると,どこに移動させるかを決めなければなりません。
    そこで,移動先のNoを1クリックするように,仕様を変えました。
    平行移動なので,クリックした場所を覚えておいて,データのある場所をさがして,
    その2つの場所のデータを入れ替えることでできます。
    これも,清書用のシートを用意しました。

  3.10チーム用
    これは,6チームを拡張させただけなので,操作は同じです。

  4.20チーム(上下2段)
    横に20チームなら,6チームを拡張させればできるのですが,問題は上下2段です。
    こうなると,単純な平行移動はできません。
    そこで,移動元をクリックし,移動先をクリックする,2クリック操作にしました。
    セルにデータがあるときは移動元と判断し,セルにデータがないときは移動先と判断することにしました。
    こうすることで,間違って操作した時(データのあるところを連続で2箇所クリックした場合)の,データの上書きを防ぎます。
    移動先が自由に選べるので,上から詰めて並べることができます。それで清書用のシートを廃止しました。

 <項目数やデータ数を、リアルタイムで計算する>
  チェックボックスをチェックしたときやデータを動かしたとき、項目数やデータ数をリアルタイムで計算するようにしました。
  こうすることで、清書のとき、それぞれのチームのデータ件数に合わせて表を作ることができます。

 <列のオートフィット>
  行で範囲指定してオートフィットを行う場合は、Row("1:10").RowHeight=20 のようにするのですが、
  列になると、column("A:J").ColumnWidth=20 のようになって、計算式で出した数値では設定できません
  実現する方法として、For Next 文で1つ1つやっていく方法がありますが,あまりにもスマートさに欠けるので、
  ユーザー定義関数で数字をアルファベットに変換するものを作りました。
  それに加えて、Type命令で、ユーザー定義型の変数の宣言を作りました。
  これで、列のオートフィットも、範囲指定でやれるようになりました。


◆最後に
 ここまで、熱心に読んでくださってありがとうございました。
 プログラムを組んだことのない方には、わかりにくい内容だと思いますが、これを機会にエクセルの
 マクロに興味を持っていただければ、と思っています。
 エクセルは、本当に楽しいツールです。自分の思いや考えが表現できます。
 そんなエクセルに、日々、感謝です。