• 締切済み

配列、ランダムを使ったVBAプログラムの作成

10行10列のセル範囲に、1から100までの整数をランダムに配置するVBAプログラムを作成したいのですが、うまくいきません。 どなたかコードを教えていただけないでしょうか?

みんなの回答

  • hor
  • ベストアンサー率0% (0/1)
回答No.1

RAND()を使えば簡単にいくのではないでしょうか? Sub てすと() Worksheets("Sheet1").Activate 'Rand()は0から1までの乱数なので100倍している Range("A1:J10").Formula = "=ROUNDUP(Rand()*100,0)" End Sub

ryohei1029
質問者

お礼

>hor様 無事成功いたしました。ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル:ランダムに配置するVBAプログラム

    大学の情報の授業でVBAに関するレポートが出題され、 さっぱり分からなくて困っています。 どなたか分かる方いらっしゃいましたら、お教えください。 問題は以下の通りです。 10行10列のセル範囲に、1から100までの整数をランダムに配置するVBAプログラムを作成せよ。 ヒント:まず1から100までの数を1次元配列に格納せよ。次に、その中身をシャッフルせよ。最後に、その配列から順に10個ずつ取り出して、セル範囲に1行ごと書き出せ。 よろしくお願いします!

  • VBAのプログラムについて

     VBAでプログラムを書いて以下のようなことを実行したいと考えていますが方法がよくわかりません。   ***1002とセルに入力されているセル列に対して、先頭の文字がaaaであったときに、その後ろの1002を計算して数値に変換するという作業です。  仮に、B列でaaa1002とあった場合に、セルの値がaaaであったときのみ、後ろの1002を100×10^2=10000と計算してB列に対応させてC列に出力したいと考えています。        B列     C列 1行目    aaa1002  10000  2行目 aac1001  空白 3行目 aaa4701  4700  :       :      : 具体的なプログラムのコード、もしくはこのような関数を使えばいいなどヒント等でも構いませんので 教えてください。よろしくお願いします。

  • "VBAの繰り返し"についてお尋ねします。VBA初心者です。

    "VBAの繰り返し"についてお尋ねします。VBA初心者です。 例えば「A列の最後のセルに何か入れば、その行のB列、C列・・・の一つ上のセルに入っている計算式を繰り返しコピーする」と言うコードを教えていただけたらと思います。A列の最後のセルに何か入ってくれば、その行の一つ上のセルに入っている計算式を繰り返しコピーするというコードです。コード記述の例を教えていただけたらと思います。よろしくお願いします。

  • VBAのプログラムに関してです

    VBAに関する質問です。 いま、A列に0~4の数字が順番に繰り返し記入されていて(数字の数はランダム)、B列に適当な値が記入されています。A列の中から1を探しだして(1つ上の行の数字が0)、 その行から1つ戻ったB列の値をC列に記入、A列の次の0~4の繰り返しで同じ条件の1を探してその行から2つ戻ったB列の値をD列に記入する。といったことをA列が空白の行になるまで繰り返し行うというプログラムを教えてほしいです。お願いします。 例) A:00011112233400001123334400011111122233400000- B:12345678912345678912345678912345678912345678- となってるA列のそれぞれの0~4の塊の最初の1をさがしてそれに対応するBをそぜぞれ求めていくというものです。 この場合だと実行結果C・D列には C:379 D:688 となってほしいです。

  • VBAのプログラムでうまく動かなくて困っています。

    VBA初心者です。 エクセルのVBAのプログラムでうまく動かなくて困っています。教えていただける方がいらしたら、ぜひ教えて下さい!よろしくお願いします。エクセルの内容は以下のとおりです。 (内容) セル    E H J L N P R・・・ 8行目100 200 50 40 30 80 9行目130 350 10 50 60 120 110 ・ ・ (1)列Hの値が列Eの値より大きい場合その下に行を追加します。 (2)セルJ+セルL+セルN+・・をしてセルEの値を超えたセル以降の値を追加した行のセルJ列から順にコピペする処理です。 上のセルの1行目の内容でいいますと、 (1)列Hの値「200」が列Eの値「100」より大きいのでその下に行追加 (2)セルJ、L、N「50」+「40」+「30」でセルEの値「100」より大きいので、追加した行のセルJ列にセルN、Pの値をコピペするです。 以下が私が書いたプログラムです。 Sub test() Dim x As Integer Dim s As Integer Dim t As Integer x = Range("B8").End(xlDown).Row r = Range("J8").End(xlToRight).Column '8行目から最終行までループ For i = x To 9 Step -1 If Cells(i, 5) < Cells(i, 8) Then ☆【For r = y To 11 Step -2 Cells(s, t).Value = Cells(i, r) + Cells(i, r + 2) If Cells(i, 5).Value < Cells(s, t).Value            Then Exit For Next】 Rows(i + 1).Insert Shift:=xlDown '超えたセルをコピーして、1行下の"J列以降"に代入 ★ x = x + 1 End If Next i End Sub 上記プログラムで★の部分がうまく書けません。☆の部分も間違っているような気がします。よろしくお願いします。

  • ランダムな数字の掛け算

    こんなこと出来るのか教えてください。例えばA列のセルに5000行位の数字データがあるとします。そのデータをB列の同じ行に1.001~1.1の範囲でランダムな数字の掛け算にしたいのです。 何かよい方法があればお教えください。よろしくお願いします。

  • エクセルのVBAでプログラムを作成中です。

    エクセルのVBAでプログラムを作成中です。 下二桁が1の項目のある列があれば、その列を別ワークシートの1番目の列に引用、 下二桁が2の項目のある列があれば、その列を別ワークシートの2番目の列に引用。。というように、 別ワークシートへ引用することができればな、と思います。 ポイントは、 下二桁を認識し、その値を列数と認識するにはどうすればよいか? ex) 101023がA1セルにあり。⇒ 下二桁が23なので、別ワークシートでは23列目。 application.worksheetfunction value vlookup 。。色々コードは思いつくのですが、そもそも見当違いなのかもしれません。 ご教示ください。

  • Excel VBAのプロシージャについて

    こんにちは、VBAを作成しているのですが、分からない所があるので、詳しい方からのご教授をお願いします。 A                                 AF  _______________________________________________________________________  1|        1   2    3   4   5    ・・・  31   ←日付  2|  鈴木  11   15   35   8 25  3|  斉藤   45   52   25   21   50  4|  伊藤   25   45 75   36 16   ・1行目のB1セルからAFセルまで日付が入っています。 ・2行目のA2セルからA4セルまで名前が入っており、横方向にランダムな数字が入っています。 上記の表から、日付とランダムな数字を指定し検索する事でmsgboxで氏名を返せるように作っています。(例えば3日25で検索すると、msgboxで斉藤とでるようにする)。 自分なりに作ってみたのは、まずvbaを実行すると、A1行をautofilterで日付を検索し、activecell(検索結果の日付セル)の列からランダムな数字を再度autofilterで検索するというものですが、もっと記述について他に方法があるのではないかと疑問に思っていますので、このようなプログラムを作成する場合、慣れた方ならどのように記述するのでしょうか?よろしければ教えていただければと思いますのでよろしくお願いします。 ※実際は検索boxを作成していますが、AHセルに検索したい日付、AIセルに検索したいランダムな数字を入力するものとさせて頂きます。 ※EXCEL2000を使用しています。 ※中傷するような回答は遠慮させていただきます。 よろしくお願いします。

  • Excel VBAでの名前の使い方

    Win7/Excel 2010で、セル範囲に名前を付け、VBAでデータを使おうと思います。セル範囲内の特定のセルの値を使おうと思いますが、方法はあるでしょうか? 行・列番号で、データを呼び出すプログラムでは、他の部分でセルの追加、削除をしたときでも、行列番号がずれてしまい、プログラムをその都度書き換える必要があります。セル範囲の名前を用い、範囲内のどの位置かを指定することができれば、プログラムを変える必要がなくなります。セルの1つづつに名前を付ければ、可能ですが、この場合、配列として取扱い難くなってしまいます。

  • 【エクセル】ランダムで重複しない整数を出したい。

    Windows 7、エクセル2007です。 ランダムで重複しない整数を任意の範囲から一部のみ入力するにはどうしたら良いでしょうか? 1.任意の範囲「1~50」とか「1~100」とか「15~300」とかから、20個だけとか40個だけとか。 2.ランダムなので「2,6,3,4,8,1・・・」とかのn、n+1、n+2ではないランダムな整数。 3.重複しないこと。 上記1~3を満たしたやり方ってありますか? 出てこない数があっても良いんです。 例えば、1~10までの範囲でランダムに3個だけセルに入力したいとき。 A1に7、A2に4、A3に9というふうに。 それが1~300の範囲で50個の数字をランダムに重複しないように入力する。 A1に15、A2に163、A3に92、・・・A50に43。 残りの250個の数字は入力されないという感じです。 乱数だと重複します。 ランク(順位)と組み合わせると、連続(n、n+1、n+2)になってしまいます。 列はどこでも良いんですが、行は連続したいです。 A1~A50とか、A1~A300とか。 関数の組み合わせでできないでしょうか? また、マクロは分からないので、詳しく解説して頂けると助かります! 情報が不足する点がありましたら指摘して下さい。 追加します。