goo blog サービス終了のお知らせ 

パソコンカレッジ スタッフのひとりごと

パソコンスクールのスタッフが、
初心者から上級者まで役立つ情報をお伝えします。

100個のセルにランダムに番号を振る(Excel2000以降)

2009-11-04 10:40:42 | ExcelVBA
今日は、長男のリクエストを取り上げます。

「数字を適当に並べてほしい」というのがそのリクエストです。

今回は、エクセルを使ってお応えしましょう。

10×10=100のセルを使って、ランダムに1から100までの数字でセルを埋めていきます。

以下のような感じです。
毎回、ランダムに数字が配置されますよ。
(なお、100個のセル範囲には、事前にセルの塗りつぶしを設定しておきました)




さて、さっそくコードを書いてみましょう。


ALT + F11 で、VisualBasicEditorを起動します。
「挿入」→「標準モジュール」をクリックします。

そこに、次のようにコードを記述してください。

-------------------------------------------------------

Sub Numbering()
    Dim i As Integer
    Dim r As Integer
    Dim c As Integer
    Const MAX_NUM As Integer = 100
    
    '以前の数字をクリア
    Range(Cells(1, 1), Cells(MAX_NUM, MAX_NUM)).ClearContents
    
    i = 1
    '乱数ジェネレータを初期化(これで本当に乱数が発生する)
    Randomize
    '今回は100になるまで繰り返し処理
    Do Until i = MAX_NUM + 1
        '乱数で行番号と列番号を取得
        r = Int(Rnd() * 10) + 1
        c = Int(Rnd() * 10) + 1
        '既に入力されているセルには書き込まない
        If Cells(r, c).Value = "" Then
            Cells(r, c).Value = i
            i = i + 1
        End If
    Loop
End Sub

-------------------------------------------------------

一応、画像も載せておきますよ。




コードの解説は、プロシージャ内のコメントをご覧ください。

それでは、実行してみましょう。

Excelに切り替えて、Excel2003までは、「ツール」→「マクロ」→「マクロ」とクリックします。
Excel2007は、Altキーを押しながらF8キーを押してください。

実行ボタンをクリックします。





新たに1から100までの数字がランダムに配置されましたね。





今回は、10行×10列のセル範囲としましたが、変更した場合、コードのどこを変更したらいいのか考えてみてくださいね。



だい

コメント (2)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ページをまたいだ表に見出し... | トップ | Windows7 アップグレードの注... »
最新の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
難しい (愚石)
2009-11-05 17:53:14
最初、a1のセルに〈=INT(RAND()*100)+1〉を入力し、それを10行10列コピーすれば済むと思いましたが、それは同じ数字が繰り返されるおそれがありますね。

しかし、この表を5行20列にするには、どこを変えるか?
う~ん、分かりません。(笑)
1から200までの数字を10行20列に表示するならどうなるんだろう?

返信する
愚石さんへ (だい)
2009-11-07 10:52:35
いつもコメントありがとうございます。

解答は、次回の記事でご紹介しますので、もうしばらくお待ちくださいね。

でも、エクセルの関数も本当にお利巧ですよね。
返信する

コメントを投稿

ExcelVBA」カテゴリの最新記事