| 
    
     |  | ▼マナ さん: ▼マナさん
 ご教示頂いた順序でマクロを書いてみました。
 ・最後に並べ替えをする際に、コードが被る事があるので、C列に並べ替え用Noを入れる項目を追加。
 ・並べ替えの書き方がわからなかったので、記録して範囲を最終行までに変更。
 →省けるコードなどがわからなかったので、そのままコピペしてしまった。
 もっとシンプルに書く方法などがありますか?
 ・データの量を増やして何度かテストしたのですが、
 なぜか、データの項目名から取ってきてしまう場合が5回に1回くらい起こってしまった。→未解決
 
 書いたコードは以下の通りです。
 添削とアドバイスがありましたらご教示頂きたく、よろしくお願いします。
 
 Sub tenki()
 Dim k As Long, g As Long 'k=期間 g=繰り返し用
 Dim MaxRow1 As Long
 Dim kaishi As Date '開始日
 Dim shuryo As Date '終了日
 Dim h As Date '日付入力用
 
 '変数"k"に期間(何か月)をセット
 k = Sheet1.Range("B5")
 kaishi = Sheet1.Range("B6")
 shuryo = Sheet1.Range("B7")
 
 For g = 1 To k
 'sheet1のデータをsheet2に貼り付け
 If Sheet2.Range("C6") = "" Then
 MaxRow1 = Sheet2.Cells(Rows.Count, "C").End(xlUp).Row + 1
 Sheet1.Range("C6:K" & Cells(Rows.Count, "E").End(xlUp).Row).Copy
 Sheet2.Range("C6").PasteSpecial
 MaxRow2 = Sheet2.Cells(Rows.Count, "C").End(xlUp).Row
 Else
 MaxRow1 = Sheet2.Cells(Rows.Count, "C").End(xlUp).Row + 1
 Sheet1.Range("C6:K" & Cells(Rows.Count, "E").End(xlUp).Row).Copy
 Sheet2.Range("C" & MaxRow1 & "").PasteSpecial
 MaxRow2 = Sheet2.Cells(Rows.Count, "C").End(xlUp).Row
 End If
 '日付の入力
 h = DateSerial(Year(kaishi), Month(kaishi) + g, 0)
 Sheet2.Range("D" & MaxRow1 & ":D" & MaxRow2 & "").Formula = h
 Next
 '並べ替え
 ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add Key:=Range("C6:C" & MaxRow2 & "") _
 , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
 ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add Key:=Range("D6:D" & MaxRow2 & "") _
 , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
 With ActiveWorkbook.Worksheets("Sheet2").Sort
 .SetRange Range("C5:K" & MaxRow2 & "")
 .Header = xlYes
 .MatchCase = False
 .Orientation = xlTopToBottom
 .SortMethod = xlPinYin
 .Apply
 End With
 End Sub
 
 |  |