| 
    
     |  | ▼かみちゃん さん: >こんにちは。かみちゃん です。
 >
 >>皆さんにはには簡単かもしれませんが、教えてください。
 >
 >私にとって、簡単ではありませんでしたが、
 >
 >>   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
 早速の回答ありがとうございます。
 知識不足で申し訳ありませんが、表(1)と表(2)の位置関係をどうすれば回答いただいたVBAと照合するのかが解らず動作が確認できませんでした。
 例えば、表(1)は、A列をrange"A1"から始めて、2行目からデータが記入されているとし,表(2)は同じシートのrange"F1"をX列としてやはり2行目からデータを入力して行くとすると上記のVBAはどこをどう変更すればいいでしょうか
 
 |  |