
【質問】
以下のマクロのコードを早く動くようにしたいです
重さの理由は、2万行×3列×3シートへ関数が入っている事と思わます
また、ブックを開くのも時間がかかるため軽くしたいです
回答は抽象的な回答にてOKです
何かヒントがあれば宜しくお願いします
例
データが入った所だけ、関数をマクロで入れる
データが入っていない所の関数をマクロで削除してから、マクロをスタートする
【マクロの内容】
【手作業】
シート1から3へデータを貼付
関数にてABC列に表示
データはシート1から3まで20,000行まで貼り付けられますが
実際3つのシート20,000行まで使う事は月1回あるかないかです
ほぼ、シート1から3で、データ件数は3,000までです
【マクロ】
❶A1セルのオートフィルターをソート
※あ をのぞく かつ 空白行をのぞく
❷ソートされたデータを集約シートへ貼付
❶と❷を3回繰り返す
【コード】
Sub 配列split()
Dim シート名 As Variant
シート名 = Split("Sheet1,Sheet2,Sheet3", ",")
Dim i As Integer
Dim privatesheet As Worksheet
For i = 0 To 2
Set privatesheet = ThisWorkbook.Worksheets(シート名(i))
privatesheet.Range("A1:C20000").AutoFilter 1, "<>", xlAnd, "<>あ"
LastRow = Worksheets("集約").Cells(Rows.Count, "a").End(xlUp).Row
LastRow1 = privatesheet.Cells(Rows.Count, "d").End(xlUp).Row
privatesheet.Cells(2, 1).Resize(LastRow1, 3).Copy
Worksheets("集約").Cells(LastRow + 1, 1).PasteSpecial xlPasteValues
Next i
End Sub


- 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
- 今の自分の気分スタンプを選ぼう!
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
> 重さの理由は、2万行×3列×3シートへ関数が入っている事と思わます
各セルには、数値や文字列じゃなくてセル関数が入っているということでしょうか?もしそうであれば、止めた方が良いです。セルには数値とか文字列だけ入れて、後は全部VBAでやる。
> また、ブックを開くのも時間がかかるため軽くしたいです
数字が書いてないので、妥当な遅さなのか、異常な遅さなのか判断付かずです。上記のようにセル関数てんこ盛りなら遅いのはしょうがないでしょうね。
VBAの内容ですが、
AutoFilter がそんなに時間が掛かるとは思えない。
PasteSpecial も、xlPasteValues なので、これ以上改善しようもない。
もし、セル関数てんこ盛りなら、
privatesheet.Cells(2, 1).Resize(LastRow1, 3).Copy
のcopyがセル関数やセル書式込みでコピーをメモリー上に作るから遅いのでしょう。「値貼り付け xlPasteValues」はあるけど「値コピー」はないと思います。
セル関数てんこ盛りをやめるのが一番ですが(ファイルを開くのもずっと速くなるし)、どうしても止められない場合は、
Worksheets("集約").Range(範囲指定).Value = privatesheet.Range(範囲指定).Value
だと、値だけが処理対象になるので、「セル情報を全部コピーして値だけペースト」よりは速くなる気がします(未確認)。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【マクロ】1つのマクロの中に、ブック指定とシート指定が混在しても良いのですか? 2 2024/05/16 07:13
- Excel(エクセル) 3つのマクロを連続実行の中で、1つ目のマクロ要件を満たさなかったら、マクロ2・3を実行しない為には 1 2023/10/15 13:42
- Visual Basic(VBA) クリップボードに貼付している文字列が、マクロで別ブックへ転記すると、消えてしまう 1 2023/10/15 13:36
- Excel(エクセル) 【マクロ】VLOOKUPにて参照元にデータが無い場合【該当なし】と表示したい 3 2024/06/08 16:45
- Excel(エクセル) 【マクロ】その時、その時で変わる範囲を、フォルダの違う別ブックへ転記する為には ※参考画像あり 3 2024/05/11 10:33
- Excel(エクセル) 【マクロ】毎回、ファイル名が変わるファイルへの 文字列の転記 2 2024/05/02 14:17
- Excel(エクセル) (マクロ)vlookupの元データを同じブックのシートではなく、別のブックに設定したい 1 2024/06/02 10:03
- Visual Basic(VBA) A2~I4179列にあるリストを支社名ごとにシートに分けたいです。 各シート名はA列にある支社名とし 3 2023/08/29 16:46
- Excel(エクセル) 【マクロ】book1からbook2への適切な転記が出来ない件 2 2023/11/08 17:23
- Visual Basic(VBA) Excel VBA 文字列のセルを反映させたいです 2 2024/02/24 00:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのVBAで集計をしたい
-
【マクロ】【相談】Excelブック...
-
VBAでシート毎に演算した項目を...
-
コマンドボタンがデザインモー...
-
Excelマクロ/選択したシートを...
-
一回のループで次のオブジェク...
-
エクセル2010 マクロを実行す...
-
エクセルでシフト管理表を作り...
-
Excel VBA 全シートの指定範囲(...
-
VBA ワークシートオブジェクト...
-
Excelで,特定のシートを開いた...
-
Excel VBAで他のシートを印刷す...
-
ExcelのSheetに作られたMacro1...
-
エクセルで可能ですか??
-
【マクロ】特定シートから値を...
-
マクロ 現在アクティブになっ...
-
VBAマクロについて教えてく...
-
任意のファイルを開くには
-
Excel VBA で別シートにコピペ。
-
Excelで1つのセルに3つの情報を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
エクセルのVBAで集計をしたい
-
エクセルを開いたとき常に同じ...
-
マクロを複数シートに実行する...
-
【 Excel】シートの見出しに自...
-
Excelのマクロの呼び出し元を知...
-
EXCELでマクロを使わずに図形の...
-
マクロ 各シートの決められた位...
-
エクセルでシートの並び替えで...
-
EXCELのエラー
-
EXCELでワークシートを開いたら...
-
メッセージボックスでシート名...
-
マクロを特定の複数シートで実...
-
VBA シート名を先月の名前に...
-
マクロで複数シートに条件付き...
-
エクセルで、マクロボタンの表...
-
VBAで条件によってシート見出し...
-
【Excel】複数あるシート上の住...
-
エクセルVBAでcmbBoxのプロパテ...
-
エクセルのチェックボックス
おすすめ情報