データの年別推移を分析するためには連続した発行年データが必要である。
通常は公報データの発行年を抽出し、重複を除去すれば発行年の連続データを作成できるが、データによっては発行年が飛んでいることがある。
また公報データが10,000件ともなれば処理に時間がかかる。
そこで、以下のように、発行年でソートし、発行年の上方の有効データを開始年とし、下方の有効データを最終年とし、その間の発行年は計算で作成するようにしている。
'変数を宣言
Dim SHEETNAME01 As String
Dim NY1 As Long, NX1 As Integer
Dim y As Long, nclm2 As Integer, bmin As Integer, bmax As Integer, nx As Long, k As Long
'シート名称設定
SHEETNAME01 = "重複なしデータ"
'
'処理対象のカラム数を指定
nclm2 = 11 '発行年欄
'
'=================================
'発行年の最小値から最大値までを抽出する
'=================================
'処理範囲の行列数を取得
Sheets(SHEETNAME01).Select
Cells(1, 1).Select
ActiveCell.CurrentRegion.Select
NY1 = Selection.Rows.Count
NX1 = Selection.Columns.Count
'発行年でソート
Sheets(SHEETNAME01).Select
Range(Cells(1, 1), Cells(NY1, NX1)).Sort Key1:=Cells(1, nclm2), Order1:=xlAscending, Header:= _
xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin
'発行年の上方の有効データを開始年とし、下方の有効データを最終年とする
For y = 2 To NY1
If Len(Cells(y, nclm2)) = 4 Then
bmin = Cells(y, nclm2) '開始年
Exit For
End If
Next y
For y = NY1 To 2 Step -1
If Len(Cells(y, nclm2)) = 4 Then
bmax = Cells(y, nclm2) '最終年
Exit For
End If
Next y
'
'===============================
'連続データを作成し、横項目を作成する
'===============================
'連続データを作成
Sheets(SHEETNAME02).Select
nx = bmax - bmin + 1
For k = 1 To nx
Cells(1, k + 1) = k + bmin - 1
Next k
'
これにより、連続した発行年を横項目として書き出すことができる。