[[20140924103630]] 『オートフィルタを使って行削除の高速化』(まいん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『オートフィルタを使って行削除の高速化』(まいん)

お世話になります。

CSVデータをエクセル形式でオープンして、さらにそのデータを必要行だけに絞る、というマクロを現在作成しておりますが、削除部分がうまくいきません。

流れとしてはGにある『205』というコード分だけを削除し、残りのデータで分析を行う、というものなのですが、ここの削除の部分でかなり時間がかかってしまいます。

自分で組んでみたのは、G列の205をオートフィルタで分別し、抽出行をまるごと削除、というコードです。

もっと早くできる方法はないでしょうか?

  Dim c As Range, myArray As Variant
  For Each c In Range("B1", Cells(Rows.Count, "B").End(xlUp))
    myArray = Split(c.Value, ",")
    c.Resize(, UBound(myArray) + 1).Value = myArray
  Next

    Columns(3).Insert '行追加

    'リマークの枝版切り離し
        Columns("B").TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
                      Other:=True, _
                      Otherchar:="-"
 Columns(3).Delete

With Range("A1").CurrentRegion

       .AutoFilter Field:=7, Criteria1:="205"
       Selection.SpecialCells(xlCellTypeVisible).Select
       Selection.EntireRow.Delete

End With

< 使用 Excel:Excel2003、使用 OS:WindowsXP >


 どのくらいのデータ量があるか分かりませんが、
 まずScreenUpdating=Falseにして、画面表示を停止する

 次に
 並び変えで「205」の行をまとめる か、
 または別のシートに205以外のデータを抽出する(AdvancedFilter)

 などがあります。

 コードの変更が余り必要ないと思うのが並べ替えですかね。

(稲葉) 2014/09/24(水) 11:52


稲葉様

ありがとうございます!

元データは3万行ぐらいで、205分を削除すると、全体行数が半分ぐらいになります。どうしても、削除をすると時間がかかってしまうんですよね。。。

AdvancedFilterというものは初めて知りました。他の抽出がまとめて出来るなら、それをコピー→他シートに転記→元のシートを全削除の方が早いですよね! ちょっと挑戦してみます!
(まいん) 2014/09/24(水) 13:13


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.