こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

EXCEL VBA作成方法

職場で頭の痛いことがありまして・・・
月合計をEXCELで1つのシートに出すことは出来ますが、それを日付ごとに(1日~31日)複数シートにする方法がわかりません。
内容は自分で工夫をして見ましたがうまくできません。ご教授をいただけますでしょうか?
Sub 月別シート分割()
Dim 元シート As Worksheet
Dim 列幅() As Variant
Dim 条件列 As Integer
Dim 月 As Long
Dim 条件1 As String, 条件2 As String
Dim i As Integer, j As Long
Set 元シート = ActiveSheet
ActiveCell.CurrentRegion.Select
ReDim 列幅(Selection.Columns.Count)
For i = 1 To Selection.Columns.Count
列幅(i) = Selection.Cells(, i).ColumnWidth
Next
条件列 = 1
月 = Month(ActiveCell.Offset(1, 条件列 - 1))
If Selection.AutoFilter Then Selection _
.AutoFilter
For i = 1 To 31
Sheets.Add Before:=Sheets(i)
ActiveSheet.Name = i & ""
条件1 = ">=" & DateSerial(月, i, 1)
条件2 = "<" & DateSerial(月, i + 1, 1)
元シート.Activate
ActiveCell.CurrentRegion.Select
Selection.AutoFilter Field:=条件列 _
, Criteria1:=条件1 _
, Operator:=xlAnd _
, Criteria2:=条件2
Selection.SpecialCells( _
xlCellTypeVisible).Copy
Sheets(i).Range("A1").PasteSpecial
For j = 1 To Selection.Columns.Count
Sheets(i).Cells(, j).ColumnWidth _
= 列幅(j)
Next j
Next i
Selection.AutoFilter
Sheets(1).Activate
End Sub

投稿日時 - 2009-10-11 15:36:20

QNo.5358900

困ってます

質問者が選んだベストアンサー

オートフィルタの条件がうまく行ってないのかな?
並べ替えの後、1行ずつ処理した方が分りやすいような気がします

Sub 月別シート分割()
Dim i As Integer, j As Long
With Worksheets("売上")
.Range("a1").Sort Key1:=.Range("A2"), Order1:=xlAscending, Header:=xlGuess
For j = 2 To .Range("a65536").End(xlUp).Row
For i = 1 To Worksheets.Count
If Format(.Cells(j, 1).Value, "yymmdd") = Worksheets(i).Name Then Exit For
Next i
If i = Worksheets.Count + 1 Then
Worksheets.Add(, Worksheets(Worksheets.Count)).Name = Format(.Cells(j, 1).Value, "yymmdd")
.Cells(1, 1).EntireRow.Copy Worksheets(Format(.Cells(j, 1).Value, "yymmdd")).Range("a1")
End If
.Cells(j, 1).EntireRow.Copy Worksheets(Format(.Cells(j, 1).Value, "yymmdd")).Range("a65536").End(xlUp).Offset(1)
Next j
End With
End Sub

参考まで

投稿日時 - 2009-10-12 13:44:34

お礼

一度試してみます。

投稿日時 - 2009-10-12 14:11:20

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

対象シートの構造とデータ例を示してください。
シート名についても説明をお願いします

投稿日時 - 2009-10-11 18:37:58

お礼

説明します。
一枚のシート(売上)シート名以下の内容です。
日付商品名単価個数金額
2008/1/10りんご50010050,000
2008/1/15みかん30030090,000
2008/1/20バナナ20020040,000
2008/1/10りんご50010050,000
自分としては(080110)のシート名
日付商品名単価個数金額
2008/1/10りんご50010050,000
2008/1/10りんご50010050,000
次は(080115)シート名
2008/1/15みかん30030090,000
といった内容で振り分けたいのです。

投稿日時 - 2009-10-11 23:20:04

あなたにオススメの質問