対象公報のターム(コード、Fターム、出願人など)から設定されたタームを消去する
※完全一致のみ残す/下位コード、下位分類などは処理対象外。
このケースではdcode(k)の配列に消去したいタームを読込んでから以下の処理を行なっている。
また、一部が一致しているデータを変換しないように、消去したいタームと消去するセルデータの両方に前後に区切り符号「;」を付加してから、置換処理している。
マクロは次のとおり。
'===================
'読込んだタームを消去する
'===================
'処理範囲の行列数を取得
Sheets(SHEETNAME02).Select
Cells(1, 1).Select
ActiveCell.CurrentRegion.Select
NY2 = Selection.Rows.Count
NX2 = Selection.Columns.Count
'消去対象タームの前後に区切り記号「;」を付加
For y = 2 To NY2
Cells(y, bclm) = ";" & Cells(y, bclm) & ";"
Next y
'読込んだタームを消去
For k = 2 To NY1
'文字列を置換
bcode = ";" & dcode(k) & ";"
Columns(bclm).Select
Selection.Replace what:=bcode, Replacement:=";"
Next k
'
'==============
'前後の不要な「;」を削除する
'==============
For y = 2 To NY2
If Left(Cells(y, bclm), 1) = ";" Then Cells(y, bclm) = Mid(Cells(y, bclm), 2)
nwrd = Len(Cells(y, bclm))
If Right(Cells(y, bclm), 1) = ";" Then Cells(y, bclm) = Left(Cells(y, bclm), nwrd - 1)
Next y
'
'===================
'ターム欄が空白の行を分離する
'===================
'ターム欄でソート
Range(Cells(1, 1), Cells(NY2, NX2)).Sort Key1:=Cells(1, bclm), Order1:=xlAscending, Header:= _
xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin
'ターム欄が空白の行を分離
For y = 2 To NY2
If Cells(y, bclm) = "" Then
Rows(y).Insert Shift:=xlTodown
Exit For
End If
Next y
'