• 締切済み

総当たり表のエクセルマクロ

総当たり表のエクセルマクロ エクセルで総当たり表を作るとします。分かりやすくするため,アからオの5人で,BからF列の1行目にアからオ,A列の2から6行目にアからオと入力された総当たり表だとします。 総当たり表の外のセルの2箇所をそれぞれ対戦者入力セルとして,そこに対戦者の名前(ア~オ)を入力すると,自動的に総当たり表に○をつけてくれるマクロを作成したいと思っています。1回の組み合わせで自動的に2箇所に○をつけるマクロです。 そんな面倒なことをしなくても表に直接○をつければいいと思われるかもしれませんが,実は対戦者が膨大なので1回の組み合わせで2箇所に○をつけるのが手間なのです。 それと,対戦者入力セルの1箇所に名前を入力すると,他のセルにまだ対戦していない名前が表示され(リストのような形で)クリックで他の対戦者を入力できるようにしたいと思っています。 エクセルは昔ちょこっとだけVBAをかじったことがある程度で,今は忘れてしまいました。 仕事で急遽依頼されており,困却しております。 心やさしい方,ご教示願います。

みんなの回答

  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

  A B C D E F 1   ア イ ウ エ オ 2 ア * 3 イ   * 4 ウ     * 5 エ       * 6 オ         * こんな対戦表は作るんですよね。 >1回の組み合わせで2箇所に○をつけるのが手間なのです。 という事であれば、対戦表自体、ダブルクリックで1箇所に○をつけたら もう一方にも○がつくようにしたほうが簡単かと。 ・シートModuleのWorksheet_BeforeDoubleClickイベントを使う。 ・IntersectメソッドでダブルクリックしたTargetが  Range("B2").Resize(5, 5)範囲に含まれるかどうか判定する。 含まれている時だけ以下の処理。 ・Cancel = True ・Target.Valueが空白だったら"○"にする。 ・同時にCells(Target.Column, Target.Row)も"○"にする。 やり直すケースもあるなら ・Target.Valueが"○"だったらClearContentsする。 ・同時にCells(Target.Column, Target.Row)もClearContentsする。