プロが教えるわが家の防犯対策術!

クイズアプリをVBAで作成しています。
問題と解答を一行ずつ書いたシートがあり、
それぞれの問題がユニークな番号が振られています。
ユーザフォームでボタンを押すと、
RANDBETWEEN関数で1から20000の数字をランダムで割り当て該当の行の問題が表示されます。
表示した後に 表示した回数をカウント保存したいのですが、
やり方がわかる方お教え頂けますでしょうか。

質問者からの補足コメント

  • うーん・・・

    ご回答ありがとうございます。
    具体的に申しますと、統合シートの6列目に回数がかかれた列があります
    それをユーザフォームから以下の関数
    VLOOKUP($C$1,統合!A1:F20000,6,0)で拾います
    参照元の統合シートの回数をVBA及び関数でインクリメントしたいのです。

      補足日時:2016/05/03 15:12

A 回答 (2件)

こんにちは。



一応、私は、まったくの素人なのですが、言葉のやり取りからすると、「コードはなしで」という前提なのだと思います。

>表示した後に 表示した回数をカウント保存したいのですが、
>やり方がわかる方お教え頂けますでしょうか。

これは、初歩的な話で、コマンドボタン等で乱数発生時にクリックした時に、セルに書き出して、
Range("A1").Value = Range("A1").Value +1
(書き出す場所)

ただ、本当に余計なお世話ですが、気になるのは、

>RANDBETWEEN関数で1から20000の数字をランダムで割り当て該当の行の問題が表示されます。

まず、VBAというのに、RANDBETWEEN関数を使うところが良く理解できないです。VBA関数と、ワークシート関数の、擬似乱数発生の度合いについての知識はありますか?ワークシート関数では、一様乱数は 32768 種しかありません。思ったように乱数の発生率が悪いのです。それを、RANDBETWEENで足切りしてしまうと、もっと性能が落ちます。

https://support.microsoft.com/ja-jp/kb/828795
http://www001.upp.so-net.ne.jp/isaku/rand.html
[最も多くの人に使われている乱数であろう Visual Basic の Rnd の質は最低である。 ]

VBAとも関数とも、ユニーク(一意)は確保されないのではないかと思います。

>それぞれの問題がユニークな番号が振られています。

ユニークとは、重複を許さないことです。擬似乱数ジェネレータでは、それができないので、一意を取るために、いくつかのノウハウが考えられます。これ以上のこうした話は、不要かもしれませんね。
失礼しました。
    • good
    • 0

>ユーザフォームでボタンを押すと、


なので、ここで何をしているのか
コードを開示していただかないと回答は無理だと思うのですが??
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!