#105 「経済センサス」から平成25年産業別従業者数を推計
今回の投稿は、大阪府内生産額の推計の際に指標として用いることが多いと予想される、平成25年の産業別従業者数を統計資料「経済センサス」から推計します。
民営事業所の産業別従業者数の推計
最初に、「平成24年経済センサス‐活動調査」に掲載されている民営事業所の従業者数を推計していきます。なお、産業分類は小分類になります。
データのダウンロード
総務省・経済産業省「平成24年経済センサス‐活動調査 事業所に関する集計 産業横断的集計」の 表番号 11「産業(小分類),従業者規模(8区分),経営組織(4区分)別民営事業所数,男女別従業者数及び常用雇用者数―都道府県,市区町村」から、大阪府のデータをダウンロードします。
不要項目を除外
ダウンロードしたデータにおいて、産業分類名の
1文字目がアルファベット
1文字目が「@」
1文字目と2文字目が数字かつ3文字目がアルファベット
を含む行は「不要項目」となるので、削除していきます。
VBAのコードは以下のようになります。
Sub 不要項目の削除()
Dim ws As Worksheet
Dim i As Integer
Set ws = Workbooks("H24経済センサス_民営_従業者数_大阪府_小分類.ods").Worksheets("Sheet1")
For i = 651 To 2 Step -1
' 産業分類名の1文字目がアルファベットであるセルを含む行を削除
If ws.Cells(i, 1).Value Like "[A-Z]*" Then
ws.Cells(i, 1).EntireRow.Delete
EndIf
' 産業分類名の1文字目が「@」であるセルを含む行を削除
If ws.Cells(i, 1).Value Like "@*" Then
ws.Cells(i, 1).EntireRow.Delete
EndIf
' 産業分類名の1文字目と2文字目が数字かつ3文字目がアルファベットであるセルを含む行を削除
If ws.Cells(i, 1).Value Like "[0-9][0-9][A-Z]*" Then
ws.Cells(i, 1).EntireRow.Delete
EndIf
Next
End Sub
「管理、補助的経済活動を行う事業所」の従業者数への対処
次に、三好(2020)が言及している、小分類にある「管理、補助的経済活動を行う事業所」の従業者数についての処理を行います。
三好ゆう(2020)『ノン・サーベイ法による市町村産業連関表の作成と課題―京都府内全26市町村の「市内生産額」の推計から―』福知山公立大学研究紀要2020,4巻 1号 ,pp.185 - 208
「管理、補助的経済活動を行う事業所」の従業者数への処理を行うコードは、以下のようになります。
Sub 管理補助的経済活動を行う事業所への対処()
Dim ws As Worksheet
Dim num As Long
Dim S_num As String
Dim k_String As String
Dim k_employee As Long
Dim m_employee As Double
Dim s_employee As Double
Dim ratio As Double
Dim i As Integer
Dim j As Integer
Dim k As Integer
Set ws = Workbooks("H24経済センサス_民営_従業者数_大阪府_小分類.ods").Worksheets("Sheet1")
For i = 2 To 591
If ws.Cells(i, 1).Value Like "##" & "[!0-9]*" Then
num = Val(ws.Cells(i, 1).Value)
If num < 10 Then
S_num = "0" & CStr(num)
Else
S_num = CStr(num)
End If
m_employee = ws.Cells(i, 2).Value
For j = 2 To 591
If ws.Cells(j, 1).Value Like S_num & "0*" Then
k_employee = ws.Cells(j, 2).Value
For k = 2 To 591
If ws.Cells(k, 1).Value Like S_num & "[1-9]*" Then
s_employee = ws.Cells(k, 2).Value
ratio = s_employee / m_employee
ws.Cells(k, 2).Value = s_employee + k_employee * ratio
End If
Next
End If
Next
End If
Next
' 「管理、補助的経済活動を行う事業所」を含む行をすべて削除
For i = 591 To 2 Step -1
If ws.Cells(i, 1).Value Like "##" & "0*" Then
ws.Cells(i, 1).EntireRow.Delete
EndIf
Next
' 中分類をすべて削除
For i = 591 To 2 Step -1
If Not(ws.Cells(i, 1).Value Like "###*") Then
ws.Cells(i, 1).EntireRow.Delete
EndIf
Next
End Sub
産業分類名を「分類符号」と「産業分類名」に分割する
今の段階では、産業分類名に「分類符号(数字3桁)」と「産業分類名」が同じセル内に収まっています。そこで、「分類符号」と「産業分類名」とに分割し、それぞれを違う列に格納します。
VBAのコードは、以下のようになります。
Sub 最初の数字3桁と産業分類名を分割して別々の列に格納()
Dim wsOrg As Worksheet
Dim wsDes As Worksheet
Dim i As Integer
Dim num As Long
Dim code As String
Dim iname As String
Set wsOrg = Workbooks("H24経済センサス_民営_従業者数_大阪府_小分類.ods").Worksheets("Sheet1")
Set wsDes = Workbooks("H24経済センサス_民営_従業者数_大阪府_小分類.ods").Worksheets("Sheet2")
For i = 2 To 413
num = Val(wsOrg.Cells(i, 1).Value)
If num < 100 Then
code = "0" & CStr(num)
Else
code = CStr(num)
End If
iname = Replace(wsOrg.Cells(i, 1).Value, code, "")
wsDes.Cells(i, 1).NumberFormatLocal = "@" ' セルの書式を「文字」に設定
wsDes.Cells(i, 1).Value = code
wsDes.Cells(i, 2).Value = iname
wsDes.Cells(i, 3).Value = wsOrg.Cells(i, 2).Value
Next
End Sub
現時点で、ワークシートは以下のような状態になっています。
「平成28年経済センサス - 活動調査」から、平成28年の産業別従業者数を推計
平成25年の府内生産額を推計するためには、調査年のズレを調整する必要があります。つまり、「平成24年経済センサス - 活動調査」と「平成28年経済センサス - 活動調査」を用いて、直線補間法により平成25年の産業別従業者数を推計する必要があります。
したがって、先程「平成24年経済センサス - 活動調査」のデータに対して行った処理を、「平成28年経済センサス - 活動調査」のそれにも行う必要があります。
というわけで、総務省・経済産業省「平成28年経済センサス‐活動調査 事業所に関する集計 産業横断的集計」の 表番号 9 「産業(小分類),従業者規模(8区分),経営組織(4区分)別民営事業所数,男女別従業者数及び常用雇用者数―都道府県,市区町村」における大阪府のデータに関して、上述した
データのダウンロード
不要項目の除外
「管理、補助的経済活動を行う事業所」の従業者数への対処
産業分類名を「分類符号」と「産業分類名」に分割
の処理を実行します。
小分類の分類符号を全て作成
次に、平成25年の民営事業所の産業別従業者数を計算するためのワークシートを用意します。
小分類のすべての産業が格納できるように、分類符号(code;数字3桁)を作成していきます。
VBAのコードは、以下のようになります。
Sub 細分類全てのcode作成()
Dim ws As Worksheet
Dim i As Integer
Dim row As Integer
Set ws = Workbooks("H25_民営_従業者数_全国_細分類.ods").Worksheets("Sheet1")
row = 2
' 0001〜9999のcodeを作成
ws.Columns(1).NumberFormatLocal = "@"
For i = 100 To 9999
If i < 1000 Then
ws.Cells(row, 1).Value = "0" & CStr(i)
Else
ws.Cells(row, 1).Value = CStr(i)
End If
row = row + 1
Next
End Sub
平成25年の民営事業所の産業別従業者数を推計
続いて、上記で作成したシートに平成24年及び平成28年の民営事業所の従業者数のデータを格納し、直線補完法により平成25年の民営事業所の産業別従業者を推計していきます。
推計式は以下のようになります。
$$
\begin{array}{}平成25年 従業者数 = 平成24年 従業者数 +{(平成28年 従業者数) - (平成24年 従業者数)}× \frac{平成25年から平成24年までの1年}{平成28年から平成24年までの4年}\end{array}
$$
VBAのコードは以下のようになります。
Sub 直線補完法により平成25年の民営事業所の産業別従業者数を推計()
Dim wsOrg1 As Worksheet
Dim wsOrg2 As Worksheet
Dim wsDes As Worksheet
Dim i As Integer
Dim j As Integer
Set wsOrg1 = Workbooks("H24経済センサス_民営_従業者数_大阪府_小分類.ods").Worksheets("Sheet2")
Set wsOrg2 = Workbooks("H28経済センサス_民営_従業者数_大阪府_小分類.ods").Worksheets("Sheet2")
Set wsDes = Workbooks("H25_民営_従業者数_大阪府_小分類.ods").Worksheets("Sheet1")
' 平成24年の民営事業所の従業者数を格納
For i = 2 To 990
For j = 2 To 413
If wsDes.Cells(i, 1).Value = wsOrg1.Cells(j, 1).Value Then
wsDes.Cells(i, 3).Value = wsOrg1.Cells(j, 3).Value
End If
Next
Next
' 平成28年の民営事業所の従業者を格納
For i = 2 To 990
For j = 2 To 417
If wsDes.Cells(i, 1).Value = wsOrg2.Cells(j, 1).Value Then
wsDes.Cells(i, 4).Value = wsOrg2.Cells(j, 3).Value
End If
Next
Next
' 直線補完法により平成25年の民営事業所の産業別従業者数を推計
For i = 2 To 990
wsDes.Cells(i, 5).Value = wsDes.Cells(i, 3).Value + (wsDes.Cells(i, 4).Value - wsDes.Cells(i, 3).Value) * 1 / 4
Next
End Sub
同様にして、全国における民営事業所の産業別従業者数も推計していきます。
民営以外の事業所の産業別従業者数を推計
「経済センサス−基礎調査を用いた」推計方法
今回は平成25年版の産業連関表を作成するので、民営以外の事業所の従業者数については、三好(2020)と同様にして、「平成21年 経済センサス−基礎調査」と「平成26年 経済センサス−基礎調査」を用いることになります。
データのダウンロード
平成21年経済センサス-基礎調査 事業所に関する集計 表番号11001 表題産業(小分類),従業者規模(6区分),経営組織(4区分)別民営以外の事業所数及び男女別従業者数-都道府県より、大阪府における平成21年の公的部門の産業別従業者のデータをダウンロードします。
大分類及び「数字2桁」+「アルファベット」の行を削除
大分類及び産業分類名が「数字2桁」+「アルファベット」で始まる行を削除します。VBAのコードは以下のようになります。
Sub 大分類及び数字2桁とアルファベット1文字で始まる行を削除()
Dim ws As Worksheet
Dim i As Integer
Set ws = Workbooks("H21経済センサス_国地方公共団体_従業者数_大阪府_小分類.ods").Worksheets("Sheet1")
For i = 139 To 2 Step -1
If ws.Cells(i, 1).Value Like "[A-Z]*" Or ws.Cells(i, 1).Value Like "@*" Or ws.Cells(i, 1).Value Like "##[A-Z]*" Then
ws.Cells(i, 1).EntireRow.Delete
EndIf
Next
End Sub
「管理、補助的経済活動を行う事業所」の従業者数をそれ以外の産業に割り振る
作業中のワークシートには、「管理、補助的経済活動を行う事業所」の行が含まれています。なので、民営事業所の場合と同様に、「管理、補助的経済活動を行う事業所」の従業者数をそれ以外の産業に割り振ります。
VBAのコードは以下のようになります。
Sub 管理補助的経済活動を行う事業所への対処()
Dim ws As Worksheet
Dim num As Long
Dim S_num As String
Dim k_String As String
Dim k_employee As Long
Dim m_employee As Double
Dim s_employee As Double
Dim ratio As Double
Dim i As Integer
Dim j As Integer
Dim k As Integer
Set ws = Workbooks("H21経済センサス_国地方公共団体_従業者数_大阪府_小分類.ods").Worksheets("Sheet1")
For i = 2 To 597
If ws.Cells(i, 1).Value Like "##" & "[!0-9]*" Then
num = Val(ws.Cells(i, 1).Value)
If num < 10 Then
S_num = "0" & CStr(num)
Else
S_num = CStr(num)
End If
m_employee = ws.Cells(i, 2).Value
For j = 2 To 597
If ws.Cells(j, 1).Value Like S_num & "0*" Then
k_employee = ws.Cells(j, 2).Value
For k = 2 To 597
If ws.Cells(k, 1).Value Like S_num & "[1-9]*" Then
s_employee = ws.Cells(k, 2).Value
ratio = s_employee / m_employee
ws.Cells(k, 2).Value = s_employee + k_employee * ratio
End If
Next
End If
Next
End If
Next
' 「管理、補助的経済活動を行う事業所」を含む行をすべて削除
For i = 597 To 2 Step -1
If ws.Cells(i, 1).Value Like "##" & "0*" Then
ws.Cells(i, 1).EntireRow.Delete
EndIf
Next
' 中分類をすべて削除
For i = 597 To 2 Step -1
If Not(ws.Cells(i, 1).Value Like "###*") Then
ws.Cells(i, 1).EntireRow.Delete
EndIf
Next
End Sub
産業分類名を「分類符号」と「部門名」に分割する
今の段階では、産業分類名に「分類符号(数字3桁)」と「分類名」が同じセル内に収まっています。なので、産業分類名の「分類符号」と「分類名」とに分割し、それぞれを違う列に格納します。
VBAのコードは、以下のようになります。
Sub 最初の数字3桁と産業分類名を分割して別々の列に格納()
Dim wsOrg As Worksheet
Dim wsDes As Worksheet
Dim i As Integer
Dim num As Long
Dim code As String
Dim iname As String
Set wsOrg = Workbooks("H21経済センサス_国地方公共団体_従業者数_大阪府_小分類.ods").Worksheets("Sheet1")
Set wsDes = Workbooks("H21経済センサス_国地方公共団体_従業者数_大阪府_小分類.ods").Worksheets("Sheet2")
For i = 2 To 417
num = Val(wsOrg.Cells(i, 1).Value)
If num < 100 Then
code = "0" & CStr(num)
Else
code = CStr(num)
End If
iname = Replace(wsOrg.Cells(i, 1).Value, code, "")
wsDes.Cells(i, 1).NumberFormatLocal = "@" ' セルの書式を「文字」に設定
wsDes.Cells(i, 1).Value = code
wsDes.Cells(i, 2).Value = iname
wsDes.Cells(i, 3).Value = wsOrg.Cells(i, 2).Value
Next
End Sub
「平成26年経済センサス - 基礎調査」から平成26年の民営以外の事業所における産業別従業者数を推計
今度は、平成26年経済センサス‐基礎調査 事業所に関する集計 表番号09100 表題産業(小分類)、経営組織(4区分)別事業所数、男女別従業者数及び常用雇用者数(国及び地方公共団体)-都道府県から、大阪府のデータに関して、上述した
データのダウンロード
不要項目の除外
「管理、補助的経済活動を行う事業所」の従業者数への対処
産業分類名を「分類符号」と「産業分類名」に分割
の処理を実行します。
小分類の分類符号を全て作成
次に、平成25年の民営以外の事業所の産業別従業者数を計算するためのワークシートを用意します。
小分類のすべての産業が格納できるように、分類符号(code;数字3桁)を作成していきます。
VBAのコードは、以下のようになります。
Sub 小分類全てのcode作成()
Dim ws As Worksheet
Dim i As Integer
Dim row As Integer
Set ws = Workbooks("H25_公的部門_従業者数_大阪府_小分類.ods").Worksheets("Sheet1")
row = 2
' 11〜999のcodeを作成
ws.Columns(1).NumberFormatLocal = "@"
For i = 11 To 999
If i < 100 Then
ws.Cells(row, 1).Value = "0" & CStr(i)
Else
ws.Cells(row, 1).Value = CStr(i)
End If
row = row + 1
Next
End Sub
平成25年の公的部門の事業所の産業別従業者数を推計
続いて、上記で作成したシートに平成24年及び平成28年の民営以外(公的部門)の事業所の従業者数のデータを格納し、直線補完法により平成25年の公的部門の事業所の産業別従業者を推計していきます。
推計式は以下のようになります。
$$
\begin{array}{}平成25年 従業者数 = 平成21年 従業者数 +{(平成26年 従業者数) - (平成21年 従業者数)}× \frac{平成25年から平成21年までの4年}{平成26年から平成21年までの5年}\end{array}
$$
VBAのコードは以下のようになります。
Sub 直線補完法により平成25年の民営事業所の産業別従業者数を推計()
Dim wsOrg1 As Worksheet
Dim wsOrg2 As Worksheet
Dim wsDes As Worksheet
Dim i As Integer
Dim j As Integer
Set wsOrg1 = Workbooks("H21経済センサス_国地方公共団体_従業者数_大阪府_小分類.ods").Worksheets("Sheet2")
Set wsOrg2 = Workbooks("H26経済センサス_国地方公共団体_従業者数_大阪府_小分類.ods").Worksheets("Sheet2")
Set wsDes = Workbooks("H25_公的部門_従業者数_大阪府_小分類.ods").Worksheets("Sheet1")
' 平成21年の公的部門の事業所の従業者数を格納
For i = 2 To 990
For j = 2 To 426
If wsDes.Cells(i, 1).Value = wsOrg1.Cells(j, 1).Value Then
wsDes.Cells(i, 3).Value = wsOrg1.Cells(j, 3).Value
End If
Next
Next
' 平成26年の公的部門の事業所の従業者を格納
For i = 2 To 990
For j = 2 To 427
If wsDes.Cells(i, 1).Value = wsOrg2.Cells(j, 1).Value Then
wsDes.Cells(i, 4).Value = wsOrg2.Cells(j, 3).Value
End If
Next
Next
' 直線補完法により平成25年の公的部門の事業所の産業別従業者数を推計
For i = 2 To 990
wsDes.Cells(i, 5).Value = wsDes.Cells(i, 3).Value + (wsDes.Cells(i, 4).Value - wsDes.Cells(i, 3).Value) * 4 / 5
Next
End Sub
なお、平成25年の全国における公的部門の産業別従業者に関しては、以前に#81で作成した平成23年の公的部門の産業別従業者のワークシートを活用して推計を行いました。
民営事業所と民営以外の事業所の従業者数を合計する
「経済センサス - 活動調査」を用いて推計した民営事業所の産業別従業者数と「経済センサス - 基礎調査」を用いて推計した民営以外の事業所における産業別従業者数を合計します。
まず、合計を算出するワークシートを作成します。ワークシートには、
code(産業符号)
産業分類名
平成25年の民営事業所における産業別従業者数(a)
平成25年の民営以外の事業所における産業別従業者数(b)
平成25年の産業別従業者数(a+b)
の5つの列を用意します。
小分類の分類符号を全て作成
code(産業符号)に関しては、「管理、補助的経済活動を行う事業所」(分類符号の3桁目が「0」)を除いた小分類がすべて格納できるように、分類符号(code;数字3桁)を作成していきます。
VBAのコードは、以下のようになります。
Sub 小分類全てのcode作成()
Dim ws As Worksheet
Dim i As Integer
Dim row As Integer
Set ws = Workbooks("経済センサス_H25_従業者数_全国_小分類.ods").Worksheets("Sheet1")
row = 2
' 11〜999のcodeを作成
ws.Columns(1).NumberFormatLocal = "@"
For i = 11 To 999
If i < 100 Then
ws.Cells(row, 1).Value = "0" & CStr(i)
Else
ws.Cells(row, 1).Value = CStr(i)
End If
row = row + 1
Next
' 3桁目が「0」のcodeの行を削除
For i = 990 To 2 Step -1
If ws.Cells(i, 1).Value Like "##0*" Then
ws.Cells(i, 1).EntireRow.Delete
End If
Next
End Sub
産業分類名を全て転記
次に、産業分類名の列において、code(産業符号)に対応する産業分類名を「経済センサス - 活動調査」及び「経済センサス - 基礎調査」から転記します。
VBAのコードは以下のようになります。
Sub 産業分類名を全て転記
Dim wsOrg1 As Worksheet
Dim wsOrg2 As Worksheet
Dim wsOrg3 As Worksheet
Dim wsOrg4 As Worksheet
Dim wsDes As Worksheet
Dim i As Integer
Dim j As Integer
Set wsOrg1 = Workbooks("H28経済センサス_民営_従業者数_全国_小分類.ods").Worksheets("Sheet2")
Set wsOrg2 = Workbooks("H24経済センサス_民営_従業者数_全国_小分類.ods").Worksheets("Sheet2")
Set wsOrg3 = Workbooks("H26経済センサス_国地方公共団体_従業者数_全国_小分類.ods").Worksheets("Sheet2")
Set wsOrg4 = Workbooks("H21経済センサス_国地方公共団体_従業者数_全国_小分類.ods").Worksheets("Sheet2")
Set wsDes = Workbooks("経済センサス_H25_従業者数_全国_小分類.ods").Worksheets("Sheet1")
For i = 2 To 892
For j = 2 To 427
If wsOrg1.Cells(i, 1).Value = wsDes.Cells(j, 1).Value Then
wsDes.Cells(j, 2).Value = wsOrg1.Cells(i, 2).Value
End If
Next
Next
For i = 2 To 892
If wsDes.Cells(i, 2).Value = "*" Then
Goto Continue2
Else
For j = 2 To 426
If wsDes.Cells(i, 1).Value = wsOrg2.Cells(j, 1).Value Then
wsDes.Cells(i, 2).Value = wsOrg2.Cells(j, 2).Value
End If
Next
End If
Continue2:
Next
For i = 2 To 892
If wsDes.Cells(i, 2).Value = "*" Then
Goto Continue3
Else
For j = 2 To 142
If wsDes.Cells(i, 1).Value = wsOrg3.Cells(j, 1).Value Then
wsDes.Cells(i, 2).Value = wsOrg3.Cells(j, 2).Value
End If
Next
End If
Continue3:
Next
For i = 2 To 892
If wsDes.Cells(i, 2).Value = "*" Then
Goto Continue4
Else
For j = 2 To 133
If wsDes.Cells(i, 1).Value = wsOrg4.Cells(j, 1).Value Then
wsDes.Cells(i, 2).Value = wsOrg4.Cells(j, 2).Value
End If
Next
End If
Continue4:
Next
End Sub
産業分類名が格納されていない行を削除
上記のコードを実行した後で、対応するcode(産業符号)がなく産業分類名が空白となったセルを含む行を削除していきます。
VBAのコードは以下のようになります。
Sub 産業分類名が空白のセルを含む行を削除
Dim ws As Worksheet
Dim i As Integer
Set ws = Workbooks("経済センサス_H25_従業者数_全国_小分類.ods").Worksheets("Sheet1")
For i = 892 To 2 Step -1
' 産業分類名が空白のセルを含む行を削除
If ws.Cells(i, 2).Value Like "" Then
ws.Cells(i, 2).EntireRow.Delete
EndIf
Next
End Sub
民営事業所の従業者数と公的部門の従業者数を転記・合計
続いて、民営事業所の従業者数と公的部門の従業者数を合計用ワークシートに転記し、合計します。
VBAのコードは以下のようになります。
Sub 民営事業所と公的部門の従業者数を転記し合計
Dim wsOrg1 As Worksheet
Dim wsOrg2 As Worksheet
Dim wsDes As Worksheet
Dim i As Integer
Dim j As Integer
Set wsOrg1 = Workbooks("H25_民営_従業者数_全国_小分類.ods").Worksheets("Sheet1")
Set wsOrg2 = Workbooks("H25_公的部門_従業者数_全国_小分類.ods").Worksheets("Sheet1")
Set wsDes = Workbooks("経済センサス_H25_従業者数_全国_小分類.ods").Worksheets("Sheet1")
For i = 2 To 990
For j = 2 To 990
If wsOrg1.Cells(i, 1).Value = wsDes.Cells(j, 1).Value Then
wsDes.Cells(j, 3).Value = wsOrg1.Cells(i, 5).Value
End If
Next
Next
For i = 2 To 990
For j = 2 To 433
If wsOrg2.Cells(i, 1).Value = wsDes.Cells(j, 1).Value Then
wsDes.Cells(j, 4).Value = wsOrg2.Cells(i, 5).Value
End If
Next
Next
For i = 2 To 433
wsDes.Cells(i, 5).Value = wsDes.Cells(i, 3) + wsDes.Cells(i, 4)
Next
End Sub
同様にして、大阪府においても民営事業所の民営以外の事業所の従業者数を合計します。