• ベストアンサー

VBA初心者です

VBAを始めたばかりなのですが、どうしてもA1セルから81個の乱数(1以上100以下)をつくり、80以上のセルを数えてB12セルに個数を出力するプログラムを作成し、またA12には80以上の人数と いう文字列を出力しなければならないのですが、どこかが違うらしくうまくできません…。

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

  • ベストアンサー
  • soixante
  • ベストアンサー率32% (401/1245)
回答No.1

どのあたりが問題になっているのでしょうか。 以下はどうでしょうか。 81個の乱数はA1から右方向に並べてみました。 Sub aaa() Dim c As Integer For c = 1 To 81 Cells(1, c).Value = Int(Rnd() * 100) Next c Cells(12, 2).Value = Application.WorksheetFunction. _ CountIf(Rows(1), ">=80") Cells(12, 1).Value = "80以上の人数" End Sub

sizku-
質問者

お礼

ありがとうございます。とても参考になりました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

質問者が作ったコードは質問に載せているのですか。 載せもしないではどこが適当でないか判らないのでは。何を考えているのかな。 (1)乱数の発生 (2)値が80以上のセルの個数を数える (3)文字列の作成 画家代で、このように分けて考えられるようになるべきです。 ーー (3)はRange("A12")="80以上の人数" こんな点は質問にもならない。 (2)は色んなやり方があって、悩ましいが、エクセルワークシート関数の類推で Sub test01() '20を超える Range("B12") = WorksheetFunction.CountIf(Range("a1:A10"), ">20") End Sub Sub test01() '30以上 Range("B12") = WorksheetFunction.CountIf(Range("a1:A10"), ">=30") End Sub 参考 http://officetanaka.net/excel/vba/db/db02.htm ”>20”の部分など難しい。VBAの経験を積まないと。 (1)の乱数などは練習のための練習だ。この質問は宿題か?もっと先に勉強すべき課題がエクセルVBAなら他に沢山あるよ。 実データを扱う仕事ではそんなに乱数を使うことは無いとおもう。本赤雨滴に使うレベルになれば、立派なものだ。 Googleででも「vba 乱数発生」で照会し http://www.vba-world.com/rnd_1.html など。それらによって Sub test02() Dim intMax As Integer Dim intMin As Integer intMax = 100 intMin = 1 For i = 1 To 100 Cells(i, "A") = Int((intMax - intMin + 1) * Rnd + intMin) Next i End Sub もっと一通りの解説書でも読まないと、質問ばかりしな蹴ればならない。

sizku-
質問者

お礼

のせるのを忘れてしまいすみません…。今後気を付けたいと思います。ありがとうございました。

  • soixante
  • ベストアンサー率32% (401/1245)
回答No.2

すみません。 最初のFor Next のところ、末尾「+1」でお願いします。 Cells(1, c).Value = Int(Rnd() * 100) + 1

関連するQ&A