| 
    
     |  | こんにちは。かみちゃん です。 
 >皆さんにはには簡単かもしれませんが、教えてください。
 
 私にとって、簡単ではありませんでしたが、
 
 >   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
 
 |  |