Sheet2に月日、科目、収入、支出、残高欄を設けたらこんな感じ
Sub Test()
itmnam = Array("", "年月日", "収入", "支出")
Sheets(1).Name = "科目一覧": Sheets(2).Name = "出納帳"
Sheets("科目一覧").Cells.ClearContents
Sheets("出納帳").Select
If Sheets.Count >= 3 Then
For s = 3 To Sheets.Count
Sheets(s).Cells.ClearContents
For i = 1 To 3: Sheets(s).Cells(1, i).Value = itmnam(i): Next i
Sheets(s).Name = s
Next s
End If
endr = Range("A65536").End(xlUp).Row
Range("F1").Value = "No.": Range("F2").Value = 1
Range("F2").Select
Selection.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1, Stop:=endr - 1
Range(Cells(1, 1), Cells(endr, 7)).Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range("A2") _
, Order2:=xlAscending, Header:=xlGuess
For r1 = 1 To endr
If Cells(r1, 2) <> pkmk And r1 > 1 Then
r2 = r2 + 1
Sheets("科目一覧").Cells(r2, 1).Value = Cells(r1, 2)
Sheets("科目一覧").Cells(r2, 2).Value = r1
If r2 > 1 Then
Sheets("科目一覧").Cells(r2 - 1, 3).Value = r1 - 1
End If
pkmk = Cells(r1, 2)
End If
Next r1
Sheets("科目一覧").Cells(r2, 3).Value = r1 - 1
For r1 = 1 To r2
If r1 + 2 >= Sheets.Count Then
Sheets.Add after:=Sheets(Sheets.Count)
s = Sheets.Count
For i = 1 To 3: Sheets(s).Cells(1, i).Value = itmnam(i): Next i
End If
Sheets(r1 + 2).Name = Sheets("科目一覧").Cells(r1, 1)
rs = Sheets("科目一覧").Cells(r1, 2)
rf = Sheets("科目一覧").Cells(r1, 3)
Sheets("出納帳").Select: Range(Cells(rs, 1), Cells(rf, 1)).Copy
Sheets(r1 + 2).Select: Range("A2").Select: ActiveSheet.Paste
Sheets("出納帳").Select: Range(Cells(rs, 3), Cells(rf, 4)).Copy
Sheets(r1 + 2).Select: Range("b2").Select: ActiveSheet.Paste
Next r1
Sheets("出納帳").Select
Range(Cells(1, 1), Cells(endr, 7)).Sort Key1:=Range("f2"), Order1:=xlAscending, Header:=xlGuess
MsgBox "終了"
End Sub
お礼
まだ使用していませんが。私の希望にあっているようです。 ありがとうございました。