
皆様にいつもご指導いただきありがとうございます。
エクセルでVBAを使えるようになり、仕事もはかどるように
なってきており、誠に感謝しております。
今回ご質問させていただく件なのですが、
最近は多次元(主に2次元又は3次元)の配列を用いて
VBAを作ったりすることがあるのですが、そこで疑問といいますか
大丈夫なのかな?と心配になることがあります。
と言うのは
2次元で配列を格納した後、PF使用量を見ると増えたままに
なっているので、PCの処理能力に影響していくるのではと
思っております。
例えば、セルに
A B C D E F G H I J
1 1 2 3 4 5 6 7 8 9 10
~
9 81 82 83 84 85 86 87 88 89 90
と入力されているセルに
下記のVBAをVBAを動かすと20MBほどPF使用量が増加したまま
になっております。
初期化を行っていても、PF使用量が増えたままなので、
大丈夫なのかな?と思っております。
今後とも配列を用いてVBAを記述していく事が多くなると
思いますので、その辺りの注意点などあれば、ご指導いただければ
と思っております。宜しくお願いいたします。
Sub 配列テスト()
Dim testData() As Variant
testData = Worksheets("Sheet1").Cell.(1,1).CurrentRegion.Value
Erase testData
End Sub
また、PF使用量と言うもの自体も正確に理解しきれていない
部分も多くありますので、的を得た質問になっていないかも
しれませんが、その辺りははご了承くださいませ。
No.1ベストアンサー
- 回答日時:
> 初期化を行っていても、PF使用量が増えたままなので、
> 大丈夫なのかな?と思っております。
PF使用量...というのは、ページングファイルのことですか?
詳しくありませんが、PF は OS か アプリ側で管理されているものでは
ないかと。つまり、VBA の範疇ではないのでは?
配列は Erase か、Redim Hoge(0) でクリアできますので、VBA では、
それ以上のご心配は無用かと思います。PF については不要になれば、
OS がいずれ自動破棄するでしょうし。
> 今後とも配列を用いてVBAを記述していく事が多くなると
> 思いますので、その辺りの注意点などあれば
「その辺り」とは「どの辺り」なのでしょうか^^?
大量のデータを配列で扱う場合は、データ全体を一度に読み込まないで、
何回かに分割処理します。例えば、100万件のデータなら、一度に
100万件をオンメモリにして、メモリを食いつぶすより、1万件×100回の
処理にした方が全体的なパフォーマンスが向上します。
# メモリが不足するとスワップが発生して著しく遅くなりますよ
...こんな Tips 的な内容のことですか?
もう少し、具体的な事例を挙げてもらった方が、回答し易いと思います。
お返事ありがとうございます。
その後、いろいろ自分でテストしていたのですが、
どうも、自分の勘違いのような感じでした。
お騒がせいたしました。
また
>何回かに分割処理します。例えば、100万件のデータなら、一度に
>100万件をオンメモリにして、メモリを食いつぶすより、1万件×100回の
>処理にした方が全体的なパフォーマンスが向上します。
につきましては、とても参考になりました。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA横データを縦にしたいです 2 2023/08/08 19:38
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 改行ごとに行を追加し、数量を分割 4 2023/07/11 16:39
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) VBA カゥントで数値の範囲を規制 1 2022/05/20 06:20
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
- Visual Basic(VBA) エクセルVBA コードが同じでもファイルによって処理速度が大きく変わるのはなぜ 5 2022/11/06 21:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#でbyte配列から画像を表示さ...
-
vba フィルター 複数条件 3つ以...
-
VBA 変数名に変数を使用したい。
-
VB.NETの配列にExcelから読み込...
-
配列のペースト出力結果の書式...
-
Dir関数で読み取り順を操作でき...
-
COBOLの基本的な事なので...
-
エクセルの列一括書き込み
-
CheckBoxの配列化
-
バイナリエディタ
-
配列の中の最大値とそのインデ...
-
VBAでMODE関数をつくる
-
構造体配列内の文字列検索のよ...
-
Excelのメモリ(配列)の上限は2G...
-
エクセル VBA 変数を一括で宣言...
-
バイト配列のバイト数の設定方...
-
エクセルでXY座標に並べられた...
-
VBAにて、配列のデータを一度に...
-
vba 複数条件の集計について
-
エクセル 動的配列とPF使用量...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
C#でbyte配列から画像を表示さ...
-
Dir関数で読み取り順を操作でき...
-
エクセルでXY座標に並べられた...
-
配列のペースト出力結果の書式...
-
定数配列の書き方
-
大量の変数を定義するにはどう...
-
構造体配列の特定のメンバーをF...
-
Redim とEraseの違いは?
-
複数のtextboxの処理を一括で行...
-
VB.NETの配列にExcelから読み込...
-
COBOLの基本的な事なので...
-
Excel2010のinputboxで複数デー...
-
VBAでMODE関数をつくる
-
レコードセットの中身を配列に...
-
ReDim PreserveよりもReDimが遅い
-
EXCELを使って、アクセスログを...
-
配列の中の最大値とそのインデ...
-
VB6のメモリ解放に関して
おすすめ情報