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も見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
VBA 複数の行を高速で削除する方法
その他(プログラミング・Web制作)
-
エクセルVBA Unionはなぜ遅い?
Visual Basic(VBA)
-
VBA 複数の列を高速で削除する方法
Excel(エクセル)
-
-
4
エクセルでの列、行の挿入、削除に時間がかかるようになったが・・。
Excel(エクセル)
-
5
Excelでのセル内容の高速消去方法
その他(プログラミング・Web制作)
-
6
エクセル マクロ オートフィルの終点の指定について
Excel(エクセル)
-
7
EXCEL VBA マクロ 実行する度に処理速度がどんどん遅くなる原因が知りたい
Excel(エクセル)
-
8
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
9
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
10
Excel2000/VBA:値と書式のみ貼り付けたい。
Excel(エクセル)
-
11
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
12
マクロで#N/A"のエラー行を削除したい"
Visual Basic(VBA)
-
13
DoEventsが必要な理由について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelでLog10を自然数に直すには
-
1000円の3割の計算教えて下さい
-
医療費の計算方法を教えてくだ...
-
土嚢1体で何m3入りますか?
-
30代のデスクワークの女性が 毎...
-
WEBのようにスクロールすると付...
-
結果が負の帯分数になる計算
-
NOx・SOx量
-
57独身です。無職妻を50の女...
-
Excel 負の数のマイナス部分を...
-
【Excel】 SUMPRODUCT関数の高速化
-
直流2線式の電圧降下の計算
-
二進数の除算引き戻し法につい...
-
1平米の計算仕方は?
-
5000万円×3%+6万円などの計算を...
-
漢字の変換(計るor図る)
-
アメフト。50m÷1,39=約...
-
計算結果の上限値を設定したい
-
生イースト:ドライイースト
-
Excelの計算方法の違い
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
結果が負の帯分数になる計算
-
1000円の3割の計算教えて下さい
-
医療費の計算方法を教えてくだ...
-
土嚢1体で何m3入りますか?
-
ExcelでLog10を自然数に直すには
-
1人暮しって最低いくら程かかる...
-
【Excel】 SUMPRODUCT関数の高速化
-
計算が合いません 途中計算を教...
-
4を4つ使って1〜100を作って欲...
-
WEBのようにスクロールすると付...
-
excelで板取計算。1枚の板から...
-
iPhoneの関数電卓の使い方を教...
-
1日目に1円 二日目に2円 三日目...
-
エクセルの計算式が上書き保存...
-
1平米の計算仕方は?
-
1000m2は何坪? 計算方法、教...
-
スポーツスターの各ギアの速度...
-
5000万円×3%+6万円などの計算を...
-
今日初コンビニバイトです。 私...
-
直流2線式の電圧降下の計算
おすすめ情報