• ベストアンサー

Excel2007で乱数をつくりコピペしたいのです

Excel2007で乱数をつくりコピペしたいです (1)、マクロボタンを押します。 (2)、1~10の数字を乱数で(U6:U15000)に表示(同じ数字が連なっても大丈夫)したらAA3に数値ができあがります。 (3)、(U6:U15000)に出来た乱数をsheet5のC6から下にコピペして、 (4)、(2)でAA3に数値ができあがるのでそれをsheet5のC4にコピペします。 (5)、(1)に戻ってマクロボタンを押すと(2)(3)(4)と行くのですがコピペする場所はCから一つ右隣のDと、マクロボタンを押す度に右隣にコピペしたいです。 ご協力お願いいたします。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1607/2444)
回答No.5

AA4が何か計算式でデータを更新している場合コピー前にオンにしないと計算されないのでオンにするタイミングを変更しました。 Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True の2行が以下の上に移動しただけです。 Sh2.Range(Sh2.Cells(6, LastColumn), Sh2.Cells(15000, LastColumn)).Value = Sh1.Range(Sh1.Cells(6, "U"), Sh1.Cells(15000, "U")).Value Sub Sheet1_ボタン1_Click() Dim c As Range, LastColumn As Long Dim Sh1 As Worksheet, Sh2 As Worksheet Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Set Sh1 = Sheets("Sheet1") 'U6:U15000に乱数を表示するシート Set Sh2 = Sheets("Sheet5") For Each c In Sh1.Range(Sh1.Cells(6, "U"), Sh1.Cells(15000, "U")) c.Value = WorksheetFunction.RandBetween(1, 10) Next LastColumn = Sh2.Cells(6, Columns.Count).End(xlToLeft).Column + 1 If LastColumn < 3 Then LastColumn = 3 End If Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True Sh2.Range(Sh2.Cells(6, LastColumn), Sh2.Cells(15000, LastColumn)).Value = Sh1.Range(Sh1.Cells(6, "U"), Sh1.Cells(15000, "U")).Value Sh2.Cells(4, LastColumn).Value = Sh1.Cells(4, "AA").Value Set Sh1 = Nothing Set Sh2 = Nothing End Sub

961awaawa
質問者

お礼

ありがとうございました。お陰様で上手くできました。この件に関しての続きで質問しますので、ご返答おまちしております。

961awaawa
質問者

補足

この時間におかしいなと、ようやく気が付いて治したら滅茶苦茶上手くいってほっとしましたし、凄く嬉しいです。\(^_^)/ありがとうございました。

その他の回答 (4)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.4

>1~10の数字を乱数で(U6:U15000)に表示 U6:U15000のシート名が明記されていないのでActiveSheetとしています。 参考に Sub Test()   Dim v(1 To 14995, 0) As Long, i As Long   Dim LastCol As Long   Randomize   For i = 1 To 14995     v(i, 0) = Int(Rnd() * 10) + 1   Next   ActiveSheet.Range("U6").Resize(14995).Value = v   With Worksheets("Sheet5")     .Range("C6").Resize(14995).Value = v     LastCol = .Cells(4, Columns.Count).End(xlToLeft).Column + 1     If LastCol < 3 Then LastCol = 3     .Cells(4, LastCol).Value = ActiveSheet.Range("AA4").Value   End With End Sub

961awaawa
質問者

お礼

お久しぶりですwatabe007さん。ご返答ありがとうございます。 やはり様々なやり方があるんですね。 また何かあれば是非よろしくお願いいたします。

  • kkkkkm
  • ベストアンサー率65% (1607/2444)
回答No.3

> AA4に出来上がるんですが何処をかえたらよろしいですか? Sh2.Cells(4, LastColumn).Value = Sh1.Cells(3, "AA").Value の Sh1.Cells(3, "AA"). を Sh1.Cells(4, "AA").Value に変更してください。 Sh2.Cells(4, LastColumn).Value = Sh1.Cells(4, "AA").Value セルの指定Cellsは Cells(行,列) になります。

961awaawa
質問者

お礼

お陰様で段々とソースが見慣れてきました。ありがとうございます。

  • msMike
  • ベストアンサー率20% (363/1773)
回答No.2

》 (2)、1~10の数字を乱数で(U6:U15000)に表示したら 》 AA3に数値ができあがります。 そのロジックが理解できません。 なぜ「 AA3に数値ができあが」るンですか?

961awaawa
質問者

お礼

イヤイヤ(^_^ゞ ちょっとトライしてみたいんです。有識者さん達に突っ込まれますと、落ち込みそうなんで。

  • kkkkkm
  • ベストアンサー率65% (1607/2444)
回答No.1

画面の描画と自動計算をオフにして実行するようにしています。 もしエラーで止まった場合には自動計算がオフの状態なので Sub エラーで止まった時() を実行してください。画面の描画と自動計算がオンになります。 Sub Sheet1_ボタン1_Click() Dim c As Range, LastColumn As Long Dim Sh1 As Worksheet, Sh2 As Worksheet Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Set Sh1 = Sheets("Sheet1") 'U6:U15000に乱数を表示するシート Set Sh2 = Sheets("Sheet5") For Each c In Sh1.Range(Sh1.Cells(6, "U"), Sh1.Cells(15000, "U")) c.Value = WorksheetFunction.RandBetween(1, 10) Next LastColumn = Sh2.Cells(6, Columns.Count).End(xlToLeft).Column + 1 If LastColumn < 3 Then LastColumn = 3 End If Sh2.Range(Sh2.Cells(6, LastColumn), Sh2.Cells(15000, LastColumn)).Value = Sh1.Range(Sh1.Cells(6, "U"), Sh1.Cells(15000, "U")).Value Sh2.Cells(4, LastColumn).Value = Sh1.Cells(3, "AA").Value Set Sh1 = Nothing Set Sh2 = Nothing Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True End Sub Sub エラーで止まった時() Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True End Sub

961awaawa
質問者

お礼

AA3に数値ができあがるって言ってたんですが、間違ってました。 AA4に出来上がるんですが何処をかえたらよろしいですか? sheet5に写す時もC4からコピペしたいです。

関連するQ&A

  • Excel2007で整数の乱数

    皆さまいつも解答していただいて誠にありがとうございます。今回は二回目の乱数の使用なんですが質問させて下さい。 (1)マクロボタンを押します。 (2) U6:U15000の各セルに1~10の乱数をいれます。そうすることによってAA6:AA15000に何らかの記号が各セルに一つずつ入ります。 (3)そのAA6:AA15000に記号が入ってますがAA1:AA15000をコピーしてsheet3のA1:A15000にコピーします。 (4)、(1)に戻って(3)まで行きましてAA1の隣のBB1:BB15000にコピーします。 右隣にコピーしていきます。 よろしくお願いいたします。

  • Excel2007でヘルプをお願いします

    Excel2007でヘルプをお願いします。 (1)、(U2:U11)に上から順にアイウエオカキクケコと入ってます。 (2)、(V2:V11)に、[(1)を参照記号してどこからかで集められた]個数データが入ってます (3)、(W2:W11)にも(2)と同じような流れで入ってます。 図 | U | V | W | | ア | 16| 24| | イ | 23| 18| | ウ | ・| ・| | ・ | ・| ・| …とこんな感じです。 このデータは今回とは関係のないマクロボタン(1)が押される度に変わります。 (4)、マクロボタン(1)が押されデータが変わる度に(V2:V11)の数字データを参照にしてU列(ア~コ)を数字データが多い順に並べ変えsheet3の(C6:L6)へ[左が一番多い数字データの記号となるように]横倒しにコピペし、 (W2:W11)の場合もsheet4に(C6:L6)に(4)と同じようにコピペしたいです。 マクロボタンを作り、それを押す度にsheet3とsheet4にある(C6:L6)の下に向かって次々と入れていきたいです。(C7:L7)→(C8:L8)と 格子も付けて文字もセンターに揃えたいです。 よろしくお願いいたします。

  • Excelマクロ 別シートへ連続コピペの方法

    Excelマクロ初心者です。 現在以下のような作業をマクロを組もうとしています。 シート1のA3:A9の数値をコピー→シート1の右隣のシート(仮にシート2とします)のC3:C9へペースト→シート1へ戻りB3:B9の数値をコピー→隣の隣のシート(仮シート2の右隣のシート)のC3:C9へペースト というのをシート1のAA3:AA9まで繰り返したいです。 こういうマクロを組むのは可能なのでしょうか? もし組めるとしたらどのように組めばいいか教えて頂きたいです。 よろしくお願いします。

  • Excel2007で乱数を利用して

    乱数を利用して抜き出したいです 0~9の数字記号がありまして、その内のいずれかがセルA~AJの各セルに入ってます。 セルA~AJは1~36番目と言うことなんで数字1~36を乱数で被ることなく6個をとり その6個を利用してセルA~AJの数字記号を抜き出してセルQ6~V6に表したいです。 マクロボタンを押す度に別の乱数でまた抜き出しては次のQ7~V7へと、違う乱数を使っては下へ下へと表示したいです。 よろしくお願いいたします。

  • 【Excelマクロ】今日の日付で検索⇒データの取得

    【Excelマクロ】今日の日付で検索⇒データの取得 初めての質問です。 失礼や不手際がありましたら申し訳ございません。 何卒御協力をお願い致します。 ●Excelにて以下のような作業を行う予定です。 【現状】 ・Sheet1には当月1月分の日付、数値が入った表があります。  日付 11月1日 11月2日 ・・・ 11月30日  数値1 100 101  ・・・ 200  数値2 200 201  ・・・ 300 ※日付セルの書式設定は「日付 3月14日」形式です。 ※数値1,2の関係や日付毎の数値の変化に規則性はありません。  【やりたいこと】 ・sheet2の特定のセル(C4とC14)に当日の数値1、数値2を設定したい。 ・sheet2にボタンを設定し、毎日特定のセル(C4とC14)の値を更新したい。 ※ボタンを設置し、マクロを設定する方法については理解しています。 【バージョン】 windowsXP Excel2003 Excelマクロについてはまったくの素人で 解決方法をネットで検索してみましたが、 結局解決出来ませんでした・・・。 どなたかご教授頂ければ幸いです。 よろしくお願い致します。

  • Excel2016でリボルビングコピペ

    sheet8のセル範囲C3:C10000までの各セルに記号値A~Jのいずれかがランダムに入ってます。 マクロボタンを押します。 C3:C10000の範囲の内から 何個か行番数を選びます。 選ばれた行番数から50行戻った所までの範囲の記号値を横化して、 O4:BL4の範囲から下に向かって6000行程繰り返してコピペしたいです。 繰り返しコピペの際に選んだ行番数に+1 をして同じ形の行には成らないようにしたいです。 (抜き出して、リボルバーみたいに回転してコピペするけど、コピペされる度に行番数に+1 されてるので同じではない、みたいな感じです。) 教えて頂けたら幸いです。

  • Excelの乱数について

    excelワークシート関数で乱数を求める方法について質問です。 乱数を求める際に、正規分布の形で特定の数値(例えば0以上1未満の乱数を求めるとき、0.4や0.7)が最も多く出るようにし、その値から離れた数値ほど出にくくなるといった具合に数値の頻度に偏りを持たせることができるでしょうか。 ExcelはExcel2000、OSはWindows2000を使用しています。 よろしくお願いします。

  • Excel2003で乱数を作る関数

    Excel2003上で任意でパスワードを作りたいのですが、 できれば関数のみで作る方法をお教えください。 条件は以下です。 ・同じシート内にパスワードを作り積み上げていく。 ・左から6ケタ ・左から 任意の大文字アルファベット1つ 任意の小文字アルファベット1つ 0~9の任意の数字4ケタ ・毎日、10個程度のパスワードを発行したい ・できれば重複は避けたい などです。 数字4ケタのみなら簡単な関数で乱数のようなものを作れたのですが、アルファベットも絡むと難しくて… ご教授いただけると幸いです。

  • 保留大当たり乱数の振り分けについて

    こんにちは。 皆さんに教えて頂いた保留大当たり乱数について、数字でまとめて振り分けてみましたので、正しい理解かどうか判断して頂けますでしょうか。 エヴァ5:(確率=1/350 確変率=65%)ととします。 *入賞乱数総数=35000個 *大当たり乱数総数=100個(通状+確変、突確)(35+65) (通状モード時) A 通状大当たり乱数値=1~35 B 確変大当たり乱数値=36~100 (確変モード時) C 確変非限定 通状大当たり乱数値=1~10 D 確変限定  通状大当たり乱数値=11~35 E 確変非限定 確変大当たり乱数値=36~55 F 確変限定  確変大当たり乱数値=56~100 こんな感じでまとめてみました。 あくまで確変モード時の限定、非限定の振り分け割合はアバウトです。 非限定を20%位にしてみました。 こうして数字で表すと、多くの皆さんが回答しておられた確変中の大当たり保留が通状モードで消化されたとき(上のCやDの乱数)、はずれてしまう事が良く理解できると思い、数字でまとめてみました。 実機では、どう処理されているかは知りませんけどね。 細かな数値は別として、この考えって正しいでしょうか。

  • Excel2007で最小値から5順位内の抜き出し

    Excel2007で最小値から5順位内の列を抜き出し、コピペしたいです。 (G6:G15000)に数値が入ってまして、G4にその合計数値が入ってます。 G列から1000列以上に上記と同じ形(数値は違います)が入ってます。 合計数値の最小から5番目までの列をA列~E列にコピペしたいです。 A4、B4、C4、D4、E4にそれぞれの合計数値 A6、B6、C6、D6、E6から ABCDEそれぞれの15000行目合計数値になる前の数値 理解頂けますかね? よろしいお願いいたします。

専門家に質問してみよう