• ベストアンサー

隣のセルとは違う数を表示するには?

算数の百ます計算シートを作っています。 横一列に10セルあるとして,1セルめにrand関数で1桁の整数を表示します。2セルめには,1セルめとは違う1桁の整数を表示し,3セルめはそれ以外の数,4セルめ・・・としたいのですが,どういう関数を使えば可能でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

関数では実現が不可能です。それは関数は隣のセルの値を見て処理を分岐することは可能ですが、自分の結果によって再び処理をすることはできないからです。 VBAでマクロを書けばできますが。このマクロを標準モジュールシートに貼りつけて実行してみてください。標準モジュールシートとはALT+F11でVBE画面を呼び出し、シート名右クリック→挿入→標準モジュール で表示される画面です。 Option Explicit Sub macro1() Dim idxC, idxR, wkNum As Integer Dim wkList, wkChar As String Randomize Range("A1:K11").ClearContents wkList = "0123456789" For idxC = 2 To 11 wkNum = Int(Rnd() * Len(wkList)) + 1 wkChar = Mid(wkList, wkNum, 1) Cells(1, idxC) = Val(wkChar) wkList = Replace(wkList, wkChar, "") Next idxC wkList = "0123456789" For idxR = 2 To 11 wkNum = Int(Rnd() * Len(wkList)) + 1 wkChar = Mid(wkList, wkNum, 1) Cells(idxR, 1) = Val(wkChar) wkList = Replace(wkList, wkChar, "") Next idxR End Sub

mobuta
質問者

お礼

ありがとうございます。 ボタンも作って,うまく作動しました。 欲を言えば,変数を使って,10×10だけではなくて5×5とか6×6も作れないかと模索しています。何行目に変数の式をどのように挿入すればうまくいくのでしょうか?

その他の回答 (1)

  • poohron
  • ベストアンサー率59% (574/971)
回答No.2

関数のみで実現可能です。 A3~A12はすべてRAND() B3=RANK(A3,A$3:A$12)-1 として、B2~B10にB1をコピー。 同様に C1~L1はすべてRAND() C2=RANK(C1,$C1:$L1)-1 として、D2~L2にC2をコピー。 前述のようにごく稀にRAND()で発生した数がまったく同じになり、 RANK関数で順位が同じになってしまう(=同じ数字が表示される)ことがありますが、 ごく低い確率ですから、あまり気にする必要も無いでしょう。 一応、重複が無いか調べるために、任意のセルに下記の記述を。 =IF(OR(SUM(B3:B12)<45,SUM(C2:L2)<45),"要再計算","") F9キーを押せば再計算が可能です。 また、百ます計算シートの使い方から考えれば印刷してのご使用かと思いますが、 もしエクセルの画面上に入力していくのであれば、 1つのセルに入力するたびに勝手に再計算されてしまいますので [ツール] → [オプション] → [計算方法]から 計算方法を「手動」に変更してください。 また、A3~A12とC1~L1は文字を背景色と同じにしておくか もしくは非表示にしておいてください。

mobuta
質問者

お礼

ありがとうございます。確かに,うまく動きました。

関連するQ&A

  • 乱数の利用で、九つのセルにそれぞれ違う数を(整数)を返すことはできるの

    乱数の利用で、九つのセルにそれぞれ違う数を(整数)を返すことはできるのでしょうか。 =INT(RAND()*10)を使うのは、わかるのですが、、、。

  • ハイパーリンクのURLを隣のセルに表示する

    EXCELのシートの縦一列のセルにハイパーリンクの設定のある文字があります。 (1)この列の隣の列にそれぞれのハイパーリンクのURLを表示する。 (2)この列の文字表示を全てURLに一致させる。 (1)または、(2)は手作業でも出来ますが、できれば一括処理したいのですが、関数または、マクロでいい方法がありましたら教えてください。 よろしくお願いします。

  • エクセルのセルを整数化する方法

    宜しくお願いします。 エクセルで20列100行20シートほどのブック形式の表があります。 表内の数値を小数点1桁目で四捨五入をして整数化したいと思います。(表示形式で見た目上の整数化でなく、実際の数値として整数化したい。) 表内は複雑に計算式が入っていて、一部は他のブックからリンクが張ってあります。 また、1部のセルはパーセント(%)表示になっていて、そのセルに関しては何も変更をしないというのが条件です。 セルをひとつずつROUND関数などを使っての変換では気が遠くなります。 何か簡単に変換できる方法はないでしょうか。 期限が本日中で本当に困っています。

  • エクセルでページ数をあるセルに表示させたい

    どこかのセルに、そのシートで印刷される ページ数を表示するような計算式orマクロはありますでしょうか。 質問が分かりにくかったらすみません。

  • セルを分けた合計で0を非表示にしたい

    一桁ごとにセルがわかれた数を合計表示する際、画像のような関数を使いました。 合計の一番先頭のセルには、 =int((e4+e5)/10)) と入れてみました。 e4+e5が10を越える場合は正しく表示できますが、10未満の場合は画像のように0が表示されてしまいます。 どのようにしたら0がなくなるのか、ご教示お願い致します。

  • excel セルの統合 頭のゼロを消さない

    宜しくお願い致します。 【過程】 現在、住所録のサンプルデータを作ろうとしています。 公表するものなので、既存の情報ではないものを用意しなくてはいけません。 そこで、電話番号のセルはRAND関数を使って作ろうとしました。 (1)3文字目まで: 090か080を選ぶ        CHOOSE(RAND()*2+1,"090","080") (2)4文字目以降: 8ケタのランダムの数字を選ぶ    INT(RAND()*100000000) (1)+(2)=CHOOSE(RAND()*2+1,"090","080")&INT(RAND()*100000000) これで携帯電話番号ランダム表示完成!! とおもったのですが、、、、 【問題】 (2)の8ケタ数字の頭が0(ゼロ)を選んでいる場合、 (1)と合算した時に、頭の0を表示してくれないので、桁数が減り、11ケタ未満になってしまうという問題が発生しました。 (例:(2)で00458623と選ばれていると、電話番号080458623 となり、2桁足りなくなります。) どなたか、この問題を解決できる方いらっしゃいましたら教えてください。宜しくお願いします。 そもそもの関数の組み立て方が違うようなら、ぜひご進言宜しくお願いします。

  • エクセルで、乱数の関数 同じ数が無いように

    乱数を発生させる関数で、RAND関数は、小数点(0~1の間)で、RANDBETWEEN関数は整数で出るとのことですが、RANDBETWEEN関数は同じ数字がいくつか重複して出ます。整数で同じ数が出ないようにする関数はないでしょうか?

  • 別シートのセル値を表示する方法

    どんな計算式(関数が)良いかわからずご教授ください 例)AシートのA1セルに計算式を設定してBシートのあるセル値を表示したい Bシートのあるセル値とは。。。 2行目(固定)にある一番右端にある値(ここでいえば◆。5、6列には入っていないので4列目となる) ◆がなければ3列目の×を表示したい。(可変) セル 1行目 1 2 3 4 5 6 2行目 ○△×◆ よろしくお願いします。

  • Excelで引用元のセルの一つとなりのセル内容を表示するには?

    Excelの使い方について、1点教えてください。 例えばA1セルにLarge関数で、 様々な数字が入っているC1~C10から、 2番目に大きい数を引用したとします。 そして、次にB1セルに、 A1セルで引用したC1~C10のいずれかの数値の入っているセルの、 一つ横隣(D1~D10のうちのどれか)のセル内容を引っ張りたい場合、 どういった数式をB1セルに入れれば良いのでしょうか。 お手数をおかけしますが、ご教授下さい。 私が実際にやりたい事は、 製品名、販売数、販売開始時期、販売シェア等が記入されたExcelシートから、 販売数の多い順にとある列にずらーっと引用し並べ、 それに対応する製品名等をその引用した列の両隣に配置したいのです。 勿論、元のシートを販売数順でソートし、 そこから引っ張れば良いのですが、 元のシートへのデータ貼付を行うのみで、 後は全て自動化出きるような式を組んでみたいと思っています。 分かりにくい説明で恐縮ですが、よろしくお願い致します。

  • セルに計算結果でなく、関数式が表示される

    エクセルの関数が入っているセルに、昨日から関数式自体が表示されるようになり、計算結果がでてきません。上部のバーにある「関数の引数」ウィザードボタンfxをクリックすると、ウィンドウには計算数値が表示されています。ちなみに関数は単純に別シートのセルを参照させて足し算するだけです。別なシートに、関数式をコピーしてみましたが、ひとつのセルはできても、次のセルに連動させようとすると(セル右下に表示される太十字をひっぱっる)また、結果でなく、関数式が表示されるようになってしまいます。どうしたら解決できるでしょうか?

専門家に質問してみよう