- ベストアンサー
こんなマクロを作りたいです
それぞれの行に 値を重複せずに セルに入れたいのですが どうすればいいでしょうか? マクロを教えて頂ければ幸いです。 [今の状態] 各行でp1からp4が重複している A B C D 1 p1 p3 p3 p4 2 p4 p1 p2 p4 3 p3 p3 p1 p2 [理想な状態] 各行でp1からp4が重複してない A B C D 1 p1 p3 p2 p4 2 p4 p1 p2 p3 3 p2 p3 p1 p4
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
Public Sub gameSet() selectList = "1234" L = Len(selectList) Randomize For i = L - 1 To 1 Step -1 pos = Int(Rnd() * i) + 1 ActiveCell.Value = "p" + Mid(selectList, pos, 1) ActiveCell.Offset(0, 1).Activate selectList = Mid(selectList, 1, pos - 1) + Mid(selectList, pos + 1, i + 1 - pos) Next ActiveCell.Value = "p" + selectList ActiveCell.Offset(1, 1 - L).Activate End Sub 各行は、重複しませんが、 行自体が同じ内容の行になることはあります。
その他の回答 (4)
- taocat
- ベストアンサー率61% (191/310)
チーム云々は見なかったことにして・・(^^;;; 最初の質問の重複チェックはマクロを使わないでも入力規則で簡単に出来ると思うのですが、折角マクロでとありますので一案。 データのあるシートに以下のコードを貼り付け。 Private Sub Worksheet_Change(ByVal Target As Range) Dim R As Long R = Target.Row If WorksheetFunction.CountIf(Range(R & ":" & R), Target) > 1 Then Target.Activate MsgBox Target & " はダブりです" Target = "" End If End Sub ダブり入力があった時は、 再度そのセルをアクティブにし エラーメッセージを出し、 そのセルの値をクリアー。 以上。
- peugeot307
- ベストアンサー率22% (29/130)
たびたび、すみません(>_<) > 参加チームは4チームで、1チームにつき2試合行います。 > ですので全部で16試合行うイメージになると思います。 たとえば、A,B,C,Dの4チームがあって、 総当りでホーム&アウェイで2試合ずつだとすると、 16試合にはならないんですが・・・? 総当りの表なら、マクロとか重複とか気にせずに、 よくあるリーグ表でいいのでは?
- peugeot307
- ベストアンサー率22% (29/130)
補足要求ばかりで、回答にならなくてすみません^^; > 今はp1~p4までしかないですが、今後もっと増やすつもりです。 増やすとA,B,C,D,の列も増えますか? > [理想な状態]のデータの順番はばらばらでも結構です。 「ばらばら"でも"」ということは、順番でもいいのですか?全行が同じでもいいのですか? それでしたら、p1 p2 p3・・・と順番に入力して(これなら間違えないだろうし)、その行をコピーすればいいですよね・・・ 何か並べ方に要件があるはずですよね? (さしつかえの無い範囲で、何に使う物なのか教えて頂ければイメージしやすいのですが。)
補足
こちらこそ説明不足ですいません。 実はサッカーの対戦表を作成したいのです。 参加チームは4チームで、1チームにつき2試合行います。 ですので全部で16試合行うイメージになると思います。 対戦の順番はランダムで結構なのですが、データが重複せずに 一人ちゃんと6試合試合を行うように表示する事ができれば嬉しいです。
- peugeot307
- ベストアンサー率22% (29/130)
[今の状態]というのは、どうやって値を入れたのですか? (マクロでランダム?それとも手入力?) [理想な状態]で重複していないのはわかりますが、順番はどうやって決めるのですか?
補足
説明不足で申し訳御座いません。 [今の状態]のデータは自分で手入力しました。 今はp1~p4までしかないですが、今後もっと増やすつもりです。そこでデータが重複しないように確認しながら入力するのはかなり時間がかかりそうなので、マクロをつくりたいなと思ってました。[理想な状態]のデータの順番はばらばらでも結構です。
補足
すいません。全部で18試合でしたね。エクセルのA,B,C,Dの列はわかりやすく説明するとA列のチームVSB列のチーム、そしてC列のチームVS D列のチームという見方になります。ですので各行に重複したチームが存在するのが困るのです。リーグ戦の表でもいいと思ったのですが、この表だとどの試合からこなしていくか明確にならない為、やはり対戦表を作って欲しいとの事でした。