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列の先頭が公報番号で無い行は削除される。

同じ公報データの重複を除去する場合は、公報番号でソートしておき、現在行と次行の公報番号が同じであれば現在行をクリアするようにすれば良い。

条件に合わない公報データを除去する場合も同様で、条件で判定し、条件に合わない場合にはその行をクリアしておき、後でソートすれぱ良い。