1.ソフトの概要
  このプログラムはExcelマクロで作成したもので，Windowsやエクセルのバージョンに関係なくxlsm形式のエクセルマクロが動く環境なら利用できると思います。マクロが利用できない場合は，「開発」−マクロのセキュリティの設定変更，または，マクロ付きエクセルファイルの「プロパティ」-「全般」のセキュリティを「許可する」に変更してみてください。
　この自動時間割は，従来の中学時間割自動作成を改善したもので，中学校用で，学級数は1年8学級，2年8学級，3年8学級，教員数67人まで対応可能です。また，教員の休みなども多少考慮するように作成しています。基本的な取り扱いは，従来のものと同じで、簡易使用説明や使用説明をクリックすれば説明フォームが表示されます。また、手動時間割の時間割手動自動作成913.xlsmも添付しました。
　なお、学級数が少ない場合は、従来の中学時間割自動作成が使い勝手がよいと思います。
　前回の自動時間割AB3.xlsmからの変更点は、塊処理と回塊処理にfor文を用いた処理に乱数を用いた処理を加え選択できるようにしたことです。for文の処理は順番に行いますが、乱数を用いた処理は、教師の多い持ち時数を優先するようにしています。ただ、どちらが時間割作成において優位であるかは判断できないのが現状です。その時々の入力や乱数を使うタイミングで変化しますので、実際に処理を行ってみて判断してください。

　大雑把な使用法は，
　1．学校にあった基本設定を行う。（基本設定シートに説明があります。）
　2．入力シートに教科を入れます。ここで注意は基本設定に登録した教科名を入力しなければなりません。
　　 主なものは入力処理のところにボタンがあります。なお，このボタンを使用するときは必ず基本設定に，ボタンの教科を登録して下さい。
  3．教員が休みの時は，入力シートのD57からの教師休み処理場所に範囲を指定し休み入力をクリックすると×が登録されます。
　4．AN46のセルに重複最小値を入力する。重複を許さない完全な時間割を作りたい場合は0を指定します。
　　 ある程度の重複を許す場合は，重複してもよい数を入力する。この場合はシートの下に候補時間割がコピーされます。
　　 これらのデータを手動変動にコピーし，手動で時間割を調整してください。　　 
　5．自動をクリックして時間割を作成します。自動は，教師重複，教科重複などの作業を組み合わせて作成したプログラムです。
　　 ※ １つの学級を２人の教師が担当する体育などの教科や2時間続きの教科は，最初に時間割に固定して使用してください。また，数Ｔなどは数で時間割を作成後手動で入れた方がよいです。　
　6．手動変更で印刷する。ただし、累積集計が未完成になっています。集計を使用し式を組み込みことで累計を表示させることが可能です。

　VB中学自動時間割作成と中学自動時間割作成2との併用について
　中学自動時間割作成2の自動時間割AB6.xlsmは、学級数が多い学校に対応したものになっています。そのため、時間割を作るには自動の処理だけでは何度も処理を行わせる必要が多くなります。その場合、VB中学自動時間割作成の自動Try40を使うことで、1度のクリックで40回の処理を行うことができます。回数は40回ですが、途中で時間割が完成した場合は処置が停止します。また、VB中学自動時間割作成と中学自動時間割作成2で、クリップコピーを使用できるためやりとりも簡単に行うことができます。中学自動時間割作成2をメインで使用していて、学級数が多い場合は、VB中学自動時間割作成と中学自動時間割作成2の併用する使い方もご検討ください。


2．作者への連絡先(メールアドレス、掲示板 等）

　taisyoku2315i@gmail.com
  退職したものですので，実際に使用してのバグ取りが出来ません。バグがありましたら，上記にメールを下さい。改善していきたいと思います。
　

3．取り扱い種別

　 フリーソフトです。エクセルマクロも改変可能です。ただし，このソフトをベースにプログラムを改変し投稿したり，商業目的などに使用しないで下さい。
　 このソフトは，毎週の時間割作成で疲労困憊している教員のために作成したものです。　

4．動作環境

　windows11のExce2021まで動作確認済みです。
  
5．インストール・アンインストール方法

　エクセルファイル単体なので，エクセルがあればそのまま呼び込むだけです。ただし，マクロを使用できるようにして下さい。

6.訂正事項の補足

  このファイルは2026年8月5日にプログラムを更新したものです。

7．その他

  時間割関係では、他にVB中学自動時間割作成、時間割手動自動作成があります。
　中学生に問題演習をさせたい方は，vectorの学習&教育の算数・数学の「koyaシリーズ」を一度使用してみて下さい。
　vectorにはサウンドカードを利用したオシロスコープソフトSC-Oscilloscopeをアップしました。このソフトは理科の実験での音声波形を画面上に表すもので、他の機能も付随しています。8ビット7セグメント 0.56インチ （74HC595を2個使用）ドライバーArduino用OriDou74HC595もアップしています。それぞれSC-Oscilloscope、OriDou74HC595で検索できますので興味のある方はご覧ください。


8. 中学時間割自動作成、中学時間割自動作成2、VB中学自動時間割作成について

　中学時間割自動作成と中学時間割自動作成2はVBAで、VB中学自動時間割作成はVisual basic　2026で作られていますので、基本的にほぼ類似したプログラムになっています。
　プログラムは、最初に入力データの配列化や入力ミスなどを調べる入力処理を行い、次に教師の休みデータを組み込む教師休処理、授業教室のデータを組み込む教室重複処理、教室重複逆処理を行います。
　この後に1日における教科重複を調べ、重複があった場合交換可能なところを調べ交換する教科重複処理、教科重複逆処理、教科重複1処理を何度か繰り返します。また、1時間における教師重複を調べ、重複があった場合交換が可能な場合交換する教師重複処理、教師重複1処理、教師重複逆処理も行います。このときに教科重複箇所の個数と教師重複個所の個数を調べ数値化し、この数値が小さくなるように処理を繰り返します。
　処理を進めていくうちに、交換できないところまで行きつくことが出てきます。このときに教科重複で止まっている時は教科重複ずれ処理を、教師重複で止まっている場合は教師重複ずれ処理を行います。この処理は止まっている個所の一方を無理やり任意の教科と入れ替えるものです。任意といっても初期化をしない乱数（random関数）を用いて交換をしています。また、ずれ処理以外はFOR文を用いて交換できるものを探し出しています。したがって、ソフトを立ち上げ同じ操作をした場合は、同じ結果になります。ソフトを立ち上げ、random関数を使用する操作をした場合違う結果になります。
　この3つの時間割作成は、random関数を使用して時間割を作っているので、ある意味「数打てばあたる」考えで時間割を作成しています。時間割が早くできるかどうかは運任せと言っていいと思います。ただ、初めの段階で、持ち時数が多い教師を配慮することによって時間割が作りやすいことは、実際の時間割づくりで経験した方が多いと思います。その考えを取り入れたのが「塊処理」、「回塊処理」です。持ち時数の多い先生の教科をばらす操作が塊処理と回塊処理です。ただ、この処理も順番に入れ替えをするのか乱数を使って入れ替えをすればいいのかどちらがよいのか数値化できるわけではありません。そのため乱数使用の有無のcheckboxを設けて、乱数を使用するかしないか決められるようにしています。
　時間割が作りやすいものとなっているかは、最初の処理の段階と処理に用いられる乱数との関係で決まります。偶然性の要素が多い感じがしますが、条件を緩めに設定することで、入力したデータから作ることのできる時間割が多くなり、重複がない時間割ができる確率が高くなります。また、持ち時数が少ない教師が多いほど時間割の作成も早くなります。ただし、1日の持ち時数はあまり考慮されない時間割が出来上がることは免れない事実です。
  とにかく、この時間割プログラムは、教師重複と教科重複がない時間割を作ることを第一の目標としてプログラムは進んでいきます。教師の休みや教室重複もデータとして入力しますが最初のみ考慮し、その後は教師重複と教科重複のみを考慮しています。そして、最終的な交換法は乱数を使った「数打てばあたる」という考えてプログラムは組まれています。
