添付画像のようなレイアウトなら
次のコードで
合計シートにデータ全数が集まり、
ジャンル順、日付順に並びます。
これならフィルターを使うことで
期待の確認ができると思います。
いや、それでもなおジャンルごとのシートに
これらを分割したいですか?
Sub Sample()
Dim cn As Object
Dim rs As Object
Dim SQL As String
Dim shT As Worksheet
'シートを定義
Set shT = ThisWorkbook.Sheets("合計") '集計先のシート
'DBを定義、設定
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cn.Provider = "Microsoft.ACE.OLEDB.12.0"
cn.Properties("Extended Properties") = "Excel 12.0;HDR=Yes;IMEX=1"
cn.Open ThisWorkbook.FullName
'SQL文を組立
SQL = "select 日付,メモ,ジャンル" & vbCrLf
SQL = SQL & "FROM [4月$A1:Z1000]" & vbCrLf
SQL = SQL & "UNION ALL" & vbCrLf
SQL = SQL & "select 日付,メモ,ジャンル" & vbCrLf
SQL = SQL & "FROM [5月$A1:Z1000]" & vbCrLf
SQL = SQL & "UNION ALL" & vbCrLf
SQL = SQL & "select 日付,メモ,ジャンル" & vbCrLf
SQL = SQL & "FROM [6月$A1:Z1000]" & vbCrLf
'・・・・
'上の3行を7,8,...1,2,3に加工して追記
'・・・・
SQL = SQL & "order by ジャンル,日付" & vbCrLf
rs.Open SQL, cn
'結果セットを格納
shT.Cells.ClearContents
shT.Cells(1, 1).Value = "日付"
shT.Cells(1, 2).Value = "メモ"
shT.Cells(1, 3).Value = "ジャンル"
shT.Cells(2, 1).CopyFromRecordset rs
cn.Close
End Sub