• 締切済み

エクセルのマクロを作成したいです

エクセルのセル「G9~G1508」に1-78までの数字をランダムに表示させるマクロを作成したいです。 一応自分で作成したのですがなんの事やら分からず… どういう記述をすればよろしいのでしょうか?

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

No.5です。 たびたびごめんなさい。 前回は15085行までになっていました。 Sub Sample2() With Range("G9:G1508") .Formula = "=RANDBETWEEN(1,78)" .Value = .Value End With End Sub に変更してください。 どうも失礼しました。m(_ _)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

こんばんは! すでに回答は出ていますが、参考程度で・・・ 単純に Sub Sample1() With Range("G9:G15085") .Formula = "=RANDBETWEEN(1,78)" .Value = .Value End With End Sub てな感じではどうでしょうか? ※ データを「値」とせずに数式のままだと、 F9キーを押すたびに再計算されます。m(_ _)m

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

Sub Macro1() Range("G9:G1508").FormulaR1C1 = "=INT(RAND()*78)+1" Range("G9:G1508").Value = Range("G9:G1508").Value End Sub 或いは Sub Macro2() Dim i As Integer Randomize For i = 9 To 1508 Range("G" & i).Value = Int(Rnd * 78) + 1 Next i End Sub

回答No.3

Public Sub Main()   Const TARGET_COLUMN As Integer = 7   Const START_ROW As Integer = 9   Const END_ROW As Integer = 1508      Application.ScreenUpdating = False      ' 対象範囲のランダム値を決定する   Call Randomize   Dim values(1 To END_ROW - START_ROW + 1, 1 To 1)   Dim i As Integer   For i = START_ROW - (START_ROW - 1) To END_ROW - (START_ROW - 1)     Dim randomValue As Integer     randomValue = CInt(Fix(Rnd() * 78)) + 1        values(i, 1) = randomValue   Next      ' 対象範囲にランダム値を設定する   ActiveSheet.range(Cells(START_ROW, TARGET_COLUMN), Cells(END_ROW, TARGET_COLUMN)).Value = values      Application.ScreenUpdating = True End Sub

  • CC_T
  • ベストアンサー率47% (1038/2202)
回答No.2

No.1 文章自己訂正 ×:1から78が欲しいならRNDに77を… ○:1から78が欲しいならRNDに78を…

  • CC_T
  • ベストアンサー率47% (1038/2202)
回答No.1

RND関数で、0以上1未満の乱数を得られます。これに必要な幅を掛ければいい。 1から78が欲しいならRNDに77を掛けて 0から77.999999・・までの数を作り、 少数以下を切り捨てて0から77までの数として、1を足して1~78までの数とする。 ~~~~~~~~ Sub test() Dim i As Integer For i = 9 To 1508 Cells(i, 7) = Application.RoundDown( Rnd * 78, 0) + 1 Next i End Sub

関連するQ&A