
EXCELのVBAで、A1からA1000まで乱数をセルに書き込むと8秒かかるのですが、これを高速化することが可能でしょうか?
For 行番号 = 1 To 1000
Cells(行番号, 1).Value = Int((10 * Rnd) + 1)
Next
セルに書き込まずに、1000個の乱数を発生させると1秒もかからないので、8秒のうちのほとんどの時間は、セルへの書込み時間にとられています。
EXCELで列のコピーをした場合は、セルへの書込み時間が早いので、1000個の乱数の結果をいったんメモリに書き込み、列のコピーのように、セルにコピーができれば、高速化が可能かなと思うのですが、VBAでできるのでしょうか?よろしくお願いします。
For 行番号 = 1 To 1000
Int((10 * Rnd) + 1)をメモリに書込み
Next
メモリの内容をA1:A1000にコピー
No.3ベストアンサー
- 回答日時:
こんにちは。
>1000個の乱数の結果をいったんメモリに書き込み、列のコピーのように、セルにコピーができれば、高速化が可能かなと思うのですが、
このようにするのかな?
Sub RundomValues()
Dim ar() As Integer
Dim i As Integer
ReDim ar(1 To 1000, 1 To 1)
Randomize '初期化
For i = 1 To 1000
ar(i, 1) = Int((10 * Rnd) + 1)
Next
Range("A1:A1000").Value = ar()
End Sub
なお、1 ~10 までですから、関数で行っても問題ないとは思いますが、ワークシート関数の乱数 Rand は、バグがあるのと、多様には出ないので、乱数の数が少ないはずです。
http://support.microsoft.com/default.aspx?kbid=8 …
配列全体を特定のセルにコピーすることができる方法を書いていただき、
助かりました。Range("A1:A1000").Value = ar()
こういう事はなかなかHELPでは検索できずに悩んでいました。
いろいろ応用もできると思いますので、このやり方を利用しようと思います。
ありがとうございました。
No.2
- 回答日時:
ループは要りませんよ
Sub test()
With ActiveSheet.Range("a1:a1000")
.Formula = "=int(rand()*(11-0)+0)"
.Value = .Value
End With
End Sub
No.1
- 回答日時:
わたしのPCでは下記で1秒もかかりませんでした。
Sub test1()
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
For 行番号 = 1 To 1000
Cells(行番号, 1).Value = Int((10 * Rnd) + 1)
Next
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
End With
End Sub
本当ですね。今、自宅のパソコンで実行すると1秒かかりませんでした。
一昨日から今日の5時まで、何回やっても8秒かかっていたのですが、
急に早くなりました。この3日間はなんだったんでしょ。
セキュリティソフトをアップデートしたためかな?
お手数をおかけしました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Visual Basic(VBA) 乱数の表示 4 2022/10/12 10:43
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
- Excel(エクセル) Excelのマクロで、特定のセルから順番に値を取得したい 5 2022/12/06 15:34
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2023/03/12 12:16
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】オートフィルターの...
-
エクセルのアポストロフィを一...
-
エクセル:マクロ「Application...
-
エクセルの2ページ目の作り方
-
Excel 行の連続データを列に参...
-
エクセルで隣接していない複数...
-
エクセルで勝手に「折り返して...
-
「選択範囲を解除してアクティ...
-
Excel VBA コピーについて
-
Excelでコピーをとったセルの色...
-
メールソフト「サンダーバード...
-
【エクセル】行の高さを規則的...
-
エクセル 飛び飛びのセルの値...
-
エクセル 別シートへのコピー...
-
シート毎にオートフィルタを実...
-
Excelで膨大なデータを処理する...
-
エクセル・数値が変化したらカ...
-
エクセルでの行数・列数を指定...
-
VBAの複数のセルのコピー法がわ...
-
excel マクロで行番号の取得方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル:マクロ「Application...
-
エクセルのアポストロフィを一...
-
エクセルで勝手に「折り返して...
-
エクセルで隣接していない複数...
-
メールソフト「サンダーバード...
-
【マクロ】オートフィルターの...
-
エクセルの2ページ目の作り方
-
Excel 行の連続データを列に参...
-
エクセルで、選択範囲の数値全...
-
エクセル 別シートへのコピー...
-
「選択範囲を解除してアクティ...
-
Excelに、ダブルクォーテーショ...
-
エクセルで値だけコピーして背...
-
エクセルで「コピーしたセルの...
-
EXCEL数値が存在する列の項目名...
-
エクセル コピーしたデータを1...
-
行数の違う表に複数行をコピーする
-
EXCELで「行と列を入れ替える」...
-
エクセルでの行数・列数を指定...
-
エクセル・数値が変化したらカ...
おすすめ情報