|
▼うさこ さん:
横から失礼
AutoFilterで年月日の月データを表示するには
下記のようにします。
サンプルをあげておきます。
Sheet1はデータ
Sheet2からは抽出データ
Sub Macro1()
Dim lCol As Long
Dim lPage As Long
Dim sht As Worksheet
Dim i As Long
Dim sS As String
Dim sE As String
Dim inPage As Long
sS = InputBox("処理開始年月日を入力", "処理開始年月日", DateSerial(Year(Date), Month(Date), 1))
sE = DateSerial(Year(CDate(sS)), Month(CDate(sS)) + 1, 1 - 1)
inPage = 5 '区切りの列数
With Worksheets("Sheet1")
lCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
lPage = Fix((lCol - 2) / inPage + 0.999999) 'シート数
.AutoFilterMode = False
With .Range("A1").CurrentRegion
.AutoFilter Field:=1, Criteria1:=">=" & sS, Operator:=xlAnd, _
Criteria2:="<=" & sE
For i = 1 To lPage
' シートの有無の確認
On Error Resume Next
Set sht = Worksheets("Sheet" & i + 1)
If Err.Number <> 0 Then
' 無かった追加
Set sht = Worksheets.Add(After:=Worksheets(Worksheets.Count))
sht.Name = "Sheet" & i + 1
End If
sht.Cells.Clear
Set sht = Nothing
.SpecialCells(xlCellTypeVisible).Copy _
Worksheets("Sheet" & i + 1).Range("A1")
With Worksheets("Sheet" & i + 1)
.Columns(i * inPage + 3).Resize(, inPage * (lPage - 1)).Delete
.Columns(3).Resize(, (i - 1) * inPage).Delete
End With
Next
End With
.AutoFilterMode = False
End With
End Sub
|
|