[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『オートフィルタを使って行削除の高速化』(まいん)
お世話になります。
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.