みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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と、マクロボタンを押す度に右隣にコピペしたいです。

ご協力お願いいたします。

投稿日時 - 2019-04-30 18:12:30

QNo.9612124

困ってます

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

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

投稿日時 - 2019-04-30 23:19:33

補足

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

投稿日時 - 2019-05-01 21:53:50

お礼

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

投稿日時 - 2019-05-01 10:52:15

ANo.5

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.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

投稿日時 - 2019-04-30 22:39:51

お礼

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

投稿日時 - 2019-05-01 13:03:35

ANo.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(行,列)
になります。

投稿日時 - 2019-04-30 21:52:15

お礼

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

投稿日時 - 2019-05-01 13:07:14

ANo.2

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

投稿日時 - 2019-04-30 20:28:45

お礼

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

投稿日時 - 2019-05-01 13:10:48

ANo.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

投稿日時 - 2019-04-30 19:44:05

お礼

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

投稿日時 - 2019-04-30 21:24:34

あなたにオススメの質問