- ベストアンサー
エクセルでトランプ
エクセルで、トランプの「山」のような状態を作りたい・・・と思っています。 例えば、1番目~52番目までに、1~52までの数値をランダムで重複なくセットし、更新するごとにその山がランダムでシャッフルされる、といった感じのものです。 いろいろ調べてみたのですが、マクロはちょっと自信がありません。また、画像なども必要ありません。 何か通常の関数などでいい方法はないでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
A1に =RAND() で、A52 までコピー。 B1(こちらが使用する数字)に =RANK(A1,$A$1:$A$52,1)+COUNTIF($A$1:A1,A1)-1 で、B52 までコピー。 ではいかがでしょう。 A列に複数生じた同じ数字は、B列では常に上のほうが小さく なるのが欠点ですが……。
その他の回答 (3)
- jo-zen
- ベストアンサー率42% (848/1995)
ANo.1の補足です。 乱数を発生させた際、可能性としてたまたま、A10とA51が同じ数字ということ(重複)が考えられます。そうした場合RANK関数で1~52が重複なくとりだせくなる(重複数字・欠番数字が発生します)ので、それを回避する方法としては、A列のセルに入れる数式を =RAND()+ROW() としてあげればいいかと思います。なお、ROW()は行番号を取り出す関数です。A1に =row() と入力すれば返される値は1、A29に =row() と入力すれば返される値は29となります。
- mshr1962
- ベストアンサー率39% (7417/18945)
ランダム自体はRAND関数でできますが計算のたびに変化するので 順番付けまでしかできませんが良いでしょうか? A1=RAND() B1=RANK($A$1:$A$52,A1) として52行目までコピーします。B1:B52に1~52の数値がランダムで並びます。 後は再計算が働く状況(セルに入力とかシートの移動)で更新されます。 C列以降に記号やトランプの数字を対応させればよりよいかと思います。 1枚ずつめくるような感じにしたい場合は、マクロを使うしかありませんけどね。
- jo-zen
- ベストアンサー率42% (848/1995)
乱数を用いて、例えばA列を作業列として 「A1」セルに =rand() と入力し、それを「A52」セルまでコピーする。B列にランダムに1~52を表示するものとして 「B1」セルに =RANK(A1,$A$1:$A$52,1) と入力し、それを「B52」セルまでコピーする。 更新する場合は「F9」キーを押せば再計算してくれます。
お礼
回答ありがとうございました。追加でもう1個乱数を発生させて、同じ数字の際の上下をランダム判定させる、という方法で対処することにしました。 他に回答頂いた方々も、大変ありがとうございました。