|
▼マリモ さん:
元シートを上書きしますので、実行前にシートの内容は別シートにコピーしておかれたほうが
よろしいかと。
結果を別シートに転記することも、もちろんできますよ。
Sub Sample()
Dim n As Long
Dim v() As Variant
Dim c As Range
Dim x As Long
Dim k As Long
Dim i As Long
With Sheets("Sheet1") '元のシート
n = WorksheetFunction.Sum(.Columns("C")) '展開必要行数(事業所数合計)
ReDim v(1 To n, 1 To 2) '展開用配列初期化
For Each c In .Range("A2", .Range("A" & .Rows.Count).End(xlUp))
x = c.Offset(, 2).Value '事業所の数
For k = 1 To x
i = i + 1
v(i, 1) = c.Value '町名
v(i, 2) = c.Offset(, 1).Value '産業の数
Next
Next
.Cells.ClearContents
.Range("A1:C1").Value = Array("ID", "町名", "産業") 'あたらしいタイトル行
.Range("B2").Resize(UBound(v, 1), UBound(v, 2)).Value = v
.Range("A2").Value = 1
.Range("B2", .Range("B" & Rows.Count).End(xlUp)).Offset(, -1).DataSeries
End With
End Sub
|
|