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