• ベストアンサー

VBA初心者です

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

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

  • ベストアンサー
  • soixante
  • ベストアンサー率32% (401/1246)
回答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/17068)
回答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/1246)
回答No.2

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

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

関連するQ&A

  • VBA CSV形式で保存したいのですが

    EXCELで、以下のような表を作成してあります。   A       B       C 1 あ,10 2 い,20,100 3 う,30 4 え,40,200,か 5 お,50 A列にカンマを含めたデータが入っており、 1000行程度あります。 このようなデータをCSV形式で保存したいのですが、 単純にVBAを組むとそれぞれのデータが""で囲まれます。 また、上記例の3行目(以降)のデータの終わりに「,」が 出力されてしまいます。 例:   あ,10 い,20,100 う,30, VBAで、 (1) ""で囲まれることなく、 (2) 行内のデータの個数によって,をつける位置を判断させて (3) セルに入っているカンマ区切りのデータをB列等に分離せずに 保存する方法はないでしょうか? ご教授、よろしくお願いします。

  • 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で以下のようなデータがあります。 D列の文字列と右隣のE列の文字列の2つが入っているものをA列から探し、見つかったセルの上にセルを追加し、E列の右隣のF列に入っている文字列を代入したいです。 どのようなプログラムになりますか?

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

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

  • エクセルvba初心者です・・・

    エクセルvba初心者です・・・ シート1にあるひとつのセルをコマンドボタンを押した時にそのセル内の文字列をシート2にかいていくようなプログラムをつくりたいです。 例えば シート1のセルに文字入力→”田中”→登録ボタンおす→シート2のセルA1にはいる シート1のセルに文字入力→”竹山”→登録ボタンおす→シート2のセルA2にはいる                  ・                  ・                  ・ というようになるコードわかる方いたら教えてください。おねがいします。

  • Excel文字列の連結について教えてください(VBA)

    Excelの文字列の結合について教えてください。 色々調べたのですが、VBA自体がよくわからず困っています。 やりたい事は、(Excel表をご参考) 『セルA1とB1とA2の文字を固定で、セルA3以降の文字以降を  順次連結してcsvに書き出すVBAを作成したい。』 どうしても繰り返す連結マクロがわかりません。 ExcelVBAに詳しい方、教えてください。 よろしくお願いします。 結果例) 20080501A01 20080501A02 20080501B01 20080501C01   ・   ・(300件以上続きます) <Excel表>    A列  B列 1  2008  05 2  01    3  A01 4  A02 5  B01 6  C01 7  ・ 8  ・

  • vba初心者

    VBA初心者ですが、ご質問があります。 以下の処理内容で困っております。 1.チェックボックスは全部で四つありエクセルのシート上にあります。 <例> checkbox1 checkbox2 checkbox3 checkbox4 ←四つあります。 ここでいうチェックボックスは、マクロの「コントロールツールボックス」のチェックボックスになります。 2.チェックボックスはチェックを入れるとセルA1にそれぞれの値を出力。 <例> checkbox1にチェックをいれたらセルA1にaと出力。 checkbox2にチェックをいれたらセルA1にbと出力。 checkbox3にチェックをいれたらセルA1にcと出力。 checkbox4にチェックをいれたらセルA1にdと出力。 3.1と2は問題なく3から困っております。 <御教授いただきたい内容>  チェックボックスを使用して、checbox1にチェックをいれたらセルA1にaと出力しcheckbox2にチェックをいれたらセルA1にコンマをつけて出力。 <例> checkbox1と2をチェックしているのでセルA1の出力は、「a、b」となる。 同様にチェックをつけたらつけただけ出力。 <例> checkbox1から4全部つけた場合、セルA1の出力は、「a、b、c、d」となる。 初心者でかなり困っております。 どなた様か御教授をお願い致します。

  • エクセルVBAでセル選択

    エクセル2000でリストを作成し、VBAで編集しようとしています。 A列に入力されているコードの先頭に「’」をつけて文字列とするための関数をB2のセルからA列のデータが入力されている最後のセルの隣までコピーしたいと思っています。 A列の最終セルを取得するVBAは分かったのですが、その値をB列の選択範囲として使用する方法がわかりません。 エクセルVBAは全くの初心者です。 どなたか教えてください!

  • EXCEL VBA 別シートの文字をシート内で検索

    excel2003 VBAで SHEET2に格納されているセルの文字をSHEET1のB列1~9000程度までの文字列の中で一致または部分一致するものがあればそのセル(B列のセル)をSHEET3に順次A列に出力したいのですが、うまくできません。SHEET2に格納されている場所はA列で(SHEET1、SHEET2の文字とも増える可能性あり) 宜しくお願いします。

  • エクセルVBA作成に関して

    VBA作成についてお願いいたします. たとえば各セルに以下のような数値があるとします    A   B  C 1 150 2 2 145 6 3 237 7 4 254 6 5 結果としてC5セルに A1*B1+A2*B2+A3*B3+A4*B4の計算をし表示するVBAを作りたいと思っています. このくらい少ない場合はよいのですが,列が多くなるといちいち計算式を書くのは大変ですし,このあたりをVBAで作れないかと悩んでいます. つまり 例表示すると Range("A1").Value とあった場合("A1")の1を2,3,...と増やしていく(あるいは減らしていく)VBAは作成可能ですか? どうも調べたかぎりでは見あたらないようなので. この表現で質問の意図は伝わったでしょうか? ご存じの方よろしくお願いいたします.

このQ&Aのポイント
  • A4用紙を印刷する際に突然、左半分に縮小印刷される問題が発生しています。この問題の解決方法を教えてください。
  • お使いの環境はWindows11で、無線LANで接続されています。関連するソフトやアプリは設定のテスト印刷時にあります。また、電話回線はひかり回線です。
  • ブラザー製品のインクジェットプリンターでA4用紙が左半分に縮小されてしまう問題が発生しています。解決方法について教えてください。
回答を見る