
No.3ベストアンサー
- 回答日時:
こんばんは。
ちょっと面白そうなので試してみました。
私の場合、配列数式を1000行を数列入れまして、行ってみました。
ストップウォッチは、zap35さんのものを使わせていただきました。
何もない状態でやると、31.25秒かかります。
Application.Calculation = xlManual
を入れると、0.485 秒
Application.Calculation = xlManual
Application.ScreenUpdating = False
(画面切り替わり停止。Windowを最小化にする必要はありません。)
を入れると、逆に、0.500秒
原因は、おそらく、復帰の時に、逆に時間が取られるのだと思います。
Sub MyTest1()
Application.Calculation = xlManual
'Application.ScreenUpdating = False
Range("A:D,H:H,I:J,K:K,M:N,P:U,W:W,X:Y").Delete Shift:=xlToLeft
'Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
以下のマクロを使ってみると、
0.422 秒となります。ただし、条件によっても変わります。
Sub MyTest2()
Application.ScreenUpdating = False
Application.Calculation = xlManual
Range("E:G,L:L,O:O,V:V").Columns.Hidden = True
Range("A:Y").SpecialCells(xlCellTypeVisible).Delete
Cells.Columns.Hidden = False
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
「Application.ScreenUpdating」を使うかは迷いましたが、入れておきます。
変数を上手に使えば、もう少し速くなるかもしれませんが、一応、こんなところかしらね。ただ、計算式が入っていない状態で、すべてが遅いとしたら、フォントの表示などに問題があるかもしれません。そちらのほうは良く分かりません。
この回答への補足
ありがとうございます。
なんと5秒台に縮まりました。
どんなマクロ言語なのかは初心者なのでよく分かりませんが
これから勉強して理解していきたいと思っております。
ありがとうございました。
No.4
- 回答日時:
#02です。
A1:Z2000の全てのセルに全角文字30文字を入力し、usamimikさんのマクロを動かしたら381msでした。更に10000行まで値を入力しても大差はありませんでした。私の環境はPen4 1.2GHzのノートパソコンです。
>コードの問題とはどういうことでしょうか?
これは質問文に書かれているコード以外にも掲載されていないコードがあり、そちらの方で時間がかかっているのではないかと考えたのです。
>計算式は使っていません
とのことですが、結果が表示されない計算式が隠れていませんか?
新規のブックで値だけを入力してマクロ実行時間を計測すれば、何か違いが分かるかもしれませんよ。
ありがとうございます。
ためしに他のPCでマクロを実行してみたところ
ものすごく早くマクロが完了しました。
どうやら私のPCのせいだったようです。
ありがとうございました。
No.2
- 回答日時:
遅い? 処理時間を以下のマクロで計測してみました
私のノートパソコンでは、結果は10msでした。(精度は10ms程度ですが…)
Declare Function GetTickCount Lib "kernel32" () As Long
Sub Macro1()
Dim strt, stp As Long
strt = GetTickCount()
Range("A:D,H:H,I:J,K:K,M:N,P:U,W:W,X:Y").Select
Selection.Delete Shift:=xlToLeft
stp = GetTickCount()
MsgBox ("処理時間" & stp - strt & "ms")
End Sub
以下のようにSelectをやめれば多少速くなりますが、微々たるものだと思います
Sub Macro1()
Dim strt, stp As Long
Range("A:D,H:H,I:J,K:K,M:N,P:U,W:W,X:Y").Delete Shift:=xlToLeft
End Sub
遅いのは質問に書かれたコードの問題ではないのではないでしょうか?
この回答への補足
お答えありがとうございます。
ストップウォッチで計ってみたところ14秒かかっています。
zap35さんのMacro1で12秒でした。
Y列までの内、6列に文字が入っています。残すL列は長いもので
全角20文字ほど入力されています。
コードの問題とはどういうことでしょうか?
スペースの空きすぎどかですか?
No.1
- 回答日時:
列はY列まで、行は500行のデータを、かかれているマクロで削除するには1秒かかりません。
原因は別にあると思われます。たとえば、計算式が別シートにあるとかそのようなことはありませんか。計算式があるとデータが変化したときにいちいち再計算が始まり処理が遅れると思います。
自動計算を止めて、その後実行する方法はどうでしょう。
Application.Calculation = xlManual 計算を手動にします
処理の後
Application.Calculation = xlAutomatic 計算を自動にします。
そのほか、画面に表示しているとその処理にも時間がかかりますので、最小化してその後、削除処理を、終了後、最大化するとスピードアップもできます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのVBAにショートカットキーの割り当て 3 2022/07/13 14:19
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
- Excel(エクセル) VBA 指定した列にある日時データから時間を削除する方法について 4 2022/04/14 11:17
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Excel(エクセル) VBA 文字列変換と指定した列にある日時データから時間を削除する方法について 2 2022/04/14 15:23
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- Excel(エクセル) Excel VBA 空白行があるセル範囲に色を付ける 3 2022/06/13 15:58
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
このQ&Aを見た人はこんなQ&Aも見ています
-
VBA 複数の行を高速で削除する方法
その他(プログラミング・Web制作)
-
エクセルでの列、行の挿入、削除に時間がかかるようになったが・・。
Excel(エクセル)
-
VBA 複数の列を高速で削除する方法
Excel(エクセル)
-
-
4
エクセルVBA Unionはなぜ遅い?
Visual Basic(VBA)
-
5
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
6
EXCEL VBA マクロ 実行する度に処理速度がどんどん遅くなる原因が知りたい
Excel(エクセル)
-
7
エクセルVBA コードが同じでもファイルによって処理速度が大きく変わるのはなぜ
Visual Basic(VBA)
-
8
ExcelVBAでBookを開く時にファイル名の一部だけを指定で
Access(アクセス)
-
9
VBAで文字を反映させると255文字の制限になってしまいます。
Visual Basic(VBA)
-
10
エクセルVBAのEntireRow.Hiddenをスピードアップしたいのですが・・・。
Excel(エクセル)
-
11
Excelでのセル内容の高速消去方法
その他(プログラミング・Web制作)
-
12
VBAで文字列を数値に変換したい
Excel(エクセル)
-
13
Excel VBA データ削除の高速化
その他(Microsoft Office)
-
14
B列の最終行までA列をオートフィル
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
米5キロ3800円のを買っています...
-
100リットルにたいして本品10ml...
-
1000円の3割の計算教えて下さい
-
excelで板取計算。1枚の板から...
-
医療費の計算方法を教えてくだ...
-
【Excel】 SUMPRODUCT関数の高速化
-
ExcelでLog10を自然数に直すには
-
WEBのようにスクロールすると付...
-
ロス率の計算が分かりません。...
-
エクセルの計算式が上書き保存...
-
5フィート5インチって
-
5000万円×3%+6万円などの計算を...
-
ミカンの廃棄量
-
1000m2は何坪? 計算方法、教...
-
2次RC回路 時定数求め方
-
if関数教えてください
-
270万円の6対4の計算式を教え...
-
1平米の計算仕方は?
-
Excel タイムカードで、昼休み...
-
2.75時間を何時間何分に直せと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
1000円の3割の計算教えて下さい
-
【Excel】 SUMPRODUCT関数の高速化
-
ExcelでLog10を自然数に直すには
-
WEBのようにスクロールすると付...
-
医療費の計算方法を教えてくだ...
-
5フィート5インチって
-
excelで板取計算。1枚の板から...
-
GPAの平均値について。
-
270万円の6対4の計算式を教え...
-
Excel タイムカードで、昼休み...
-
2.75時間を何時間何分に直せと...
-
5000万円×3%+6万円などの計算を...
-
1日目に1円 二日目に2円 三日目...
-
(教えて下さい)ブルーレイディ...
-
1000m2は何坪? 計算方法、教...
-
結果が負の帯分数になる計算
-
Excel 負の数のマイナス部分を...
-
1平米の計算仕方は?
-
変調率の求め方が
-
WPSで#VALUE!を消す方法?
おすすめ情報