|
こんにちは。かみちゃん です。
>皆さんにはには簡単かもしれませんが、教えてください。
私にとって、簡単ではありませんでしたが、
> A B C D <出来上がり>
> 2月1日 100 50 1 2月1日 100
> 2月2日 200 → 2 2月1日 50
> 2月3日 300 30 1 2月2日 200
> 1 2月3日 300
> 3 2月3日 30
以下のような感じででました。(Excel2002 SP3 で動作確認すみ)
Sub Macro1()
Dim vntData As Variant
Dim rngList As Range
Dim RowNo As Long
Dim ColumnNo As Integer
Dim MaxRowNo As Long
Dim i As Integer
Const OutColumnNo As Integer = 24 '出力開始列番号(24列=X列)
Set rngList = Range("A1")
MaxRowNo = Cells(65536, rngList.Column).End(xlUp).Row
For RowNo = 1 To MaxRowNo
ColumnNo = Cells(rngList.Offset(RowNo - 1).Row, OutColumnNo - 1).End(xlToLeft).Column
vntData = rngList.Offset(RowNo - 1).Resize(, ColumnNo).Value
Debug.Print UBound(vntData, 2)
For i = 2 To UBound(vntData, 2)
If vntData(1, i) <> "" Then
Cells(65536, OutColumnNo).End(xlUp).Offset(1).Resize(, 3).Value = Array(i - 1, vntData(1, 1), vntData(1, i))
End If
Next
Next
MsgBox "処理を終了しました。"
End Sub
|
|