- ベストアンサー
エクセル2010で、空白セルを左詰めしたい
エクセル2010を使用しています。 VBAで以下の操作を実行したいと考えていますが、 初心者につき、ご教示いただけないでしょうか。 60万行くらいあるエクセルの表(CC列まで)で、 空白セルを左詰めしたいのですが 範囲指定(空白へのジャンプ)機能をするだけで固まってしまい 何度も操作が止まってしまい困っています。 VBAでスムーズに操作することができればと思うのですが・・・ よろしくお願いします!
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
60万行全てを一度に処理したり、空白セルを1個ずつ処理するのではなく、1000行くらい毎に小分けして処理する様なマクロにされては如何でしょうか。 Sub Macro() Const m As Long = 1000 Dim i As Long, n As Long, w As Long, r As Range With ActiveSheet.UsedRange n = Int(.Rows.Count / m) Set r = .Resize(m, .Columns.Count) End With With Application .ScreenUpdating = False .Calculation = xlManual End With With r On Error Resume Next For i = 0 To n .Offset(m * i).SpecialCells(xlCellTypeBlanks).Delete xlToLeft Next i On Error GoTo 0 End With With Application .Calculation = xlAutomatic .ScreenUpdating = True End With End Sub
その他の回答 (1)
- ushi2015
- ベストアンサー率51% (241/468)
こんにちは 空白セルを左詰めしたい とは、空白セルを削除して、その右側のセルを左に寄せるということですか? Sub test() Dim r As Range Dim t As Range Set t = ActiveSheet.UsedRange Application.ScreenUpdating = False On Error Resume Next For Each r In t.Rows r.SpecialCells(xlCellTypeBlanks).Delete xlToLeft Next On Error GoTo 0 Application.ScreenUpdating = True End Sub 60万行もあると厳しいかもですね。
お礼
早速のご回答、ありがとうございます! やってみます。 他でも探して実行してみたのですが、 やはりデータ量の問題なんですかね・・・ どれも途中で固まってしまうので、質問させていただいたんです。
お礼
ご連絡 遅くなりましたが、 ご教示 ありがとうございました! 少し時間はかかると思っていたのですが さほどの時間でもなく・・ なにしろ 固まることなく完了するので、とても助かりました! 本当にありがとうございます!!!