クロス集計表を加工する | ピボットテーブルウィザードを使ってリストに変更する |
テーブルを加工する |
B | C | D | E | F | |
2 | 都道府県 | 市町村 | 女 | 男 | 総計 |
3 | 熊本県 | 熊本市 | 390,891 | 349,147 | 740,038 |
4 | 西区 | 48,526 | 42,702 | 91,228 | |
5 | 中央区 | 99,686 | 88,489 | 188,175 | |
6 | 東区 | 99,403 | 89,587 | 188,990 | |
7 | 南区 | 68,741 | 61,133 | 129,874 | |
8 | 八代市 | 66,786 | 58,070 | 124,856 | |
9 | 北区 | 74,535 | 67,236 | 141,771 | |
10 | 宮崎県 | 延岡市 | 63,629 | 56,953 | 120,582 |
11 | 宮崎市 | 211,531 | 187,391 | 398,922 | |
12 | 小林市 | 23,937 | 20,648 | 44,585 | |
13 | 都城市 | 85,803 | 76,185 | 161,988 | |
14 | 日向市 | 31,786 | 28,726 | 60,512 | |
15 | 日南市 | 27,410 | 24,351 | 51,761 | |
16 | 鹿児島県 | 姶良市 | 35,571 | 32,797 | 68,368 |
17 | 薩摩川内市 | 45,105 | 40,924 | 86,029 | |
18 | 鹿屋市 | 49,105 | 45,675 | 94,780 | |
19 | 鹿児島市 | 278,066 | 275,413 | 553,479 | |
20 | 出水市 | 24,449 | 22,707 | 47,156 | |
21 | 霧島市 | 59,683 | 55,253 | 114,936 | |
22 | 総計 | 1,784,643 | 1,623,387 | 3,408,030 |
Sub test2() Dim myData As Variant Dim i As Long, j As Long Dim cn As Long, myNo As Long Dim myRow As Long, myCol As Long With Worksheets("Sheet3") 'クロス集計表のシート myRow = .Cells(Rows.Count, 1).End(xlUp).Row 'クロス集計表の最終行 myCol = .Cells(1, Columns.Count).End(xlToLeft).Column 'クロス集計表の最終列 myData = .Range(.Cells(1, 1), .Cells(myRow, myCol)).Value 'クロス集計表の範囲 End With myNo = UBound(myData) * UBound(myData, 2) Dim myTable() As Variant ReDim myTable(1 To myNo, 1 To 4) As Variant With Worksheets("Sheet8") 'リストを書き出すシート cn = 1 For i = 2 To UBound(myData) 'myDataの配列の最大値 '県名と市名を除くので -2 For j = 1 To UBound(myData, 2) - 2 cn = cn + 1 myTable(cn - 1, 1) = myData(i, 1) myTable(cn - 1, 2) = myData(i, 2) If j Mod 2 = 1 Then myTable(cn - 1, 3) = "女" Else myTable(cn - 1, 3) = "男" End If myTable(cn - 1, 4) = myData(i, j + 2) Next j Next i .Range("A2").Resize(myNo, 4).Value = myTable End With End Sub |