B03.不要行の削除
私が利用しているデータベースSRPARTNERから公報データをダウンロードし、EXCELに読み込んだとき、文字データの一部が元の公報データとは別の行にはみだしてしまうことがある。
また、いくつかの検索結果を合体すると同じ公報データが重複することがある。
また、条件に合わない公報データを取り除きたい場合がある。
このような不要行を削除する場合、不要と判定した行を削除しても良いが、単純に行をdeleteし行データを一行移動するように処理する方法では、10,000件程度の公報データではかなり時間がかかる。
そこで、私は不要行をクリアしておき、この処理の後でソートして一括して空白行を削除するようにしている。
以下、公報データ以外を削除する例を示す。
'変数を宣言
Dim SHEETNAME02 As String
Dim NY2 As Long, NX2 As Integer
Dim y As Long, k As Integer, flg As Integer
'配列を宣言
Dim dKOHO As Variant
'シート名称設定
SHEETNAME02 = "重複なしデータ"
'
'===============================
'公報番号以外のデータがあれば削除する
'===============================
'公報種別名を配列に読込む
dKOHO = Array("WO", "特開", "特表", "実開", "実登", "特許", "特公", "実公")
'処理範囲の行列数を取得
Sheets(SHEETNAME02).Select
Cells(1, 1).Select
ActiveCell.CurrentRegion.Select
NY2 = Selection.Rows.Count
NX2 = Selection.Columns.Count
'公報番号以外をクリア
For y = 2 To NY2
flg = 0
For k = 0 To 7
If Left(Cells(y, 1), 2) = dKOHO(k) Then flg = 1
Next k
If Len(Cells(y, 1)) > 13 Then flg = 0
If flg = 0 Then Rows(y).Clear
Next y
'公報番号でソート
Range(Cells(1, 1), Cells(NY2, NX2)).Sort Key1:=Cells(1, 1), Order1:=xlAscending, Header:= _
xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin
これにより、A列の先頭が公報番号で無い行は削除される。
同じ公報データの重複を除去する場合は、公報番号でソートしておき、現在行と次行の公報番号が同じであれば現在行をクリアするようにすれば良い。
条件に合わない公報データを除去する場合も同様で、条件で判定し、条件に合わない場合にはその行をクリアしておき、後でソートすれぱ良い。