|
▼hakemaru さん:
すみません。頭が固いので、詳細が分かりません。
代わりに、こちらがイメージした処理方法を紹介しますので、
参考にしてください。
あたらしいBookを挿入してその Sheet1 に 以下のようなデータを書き込んで
標準モジュールに、下のモジュールコードをコピーして、いったんこのBookを
適当なフォルダーに「名前を付けて保存」してください。
Sheet1 (元データ)
A列 B列 日付1 日付2 日付3 F列 G列 H列 ・・・S列
あ A 1/5 1/6 1/10 α GGG H2 S2
い B 1/5 1/6 1/10 β GGG H3 S3
う C 1/6 1/7 1/11 γ GGG H4 S4
え D 1/7 1/8 1/12 δ GGG H5 S5
お E 1/7 1/8 1/12 ε GGG H6 S6
か F 1/7 1/8 1/12 ζ GGG H7 S7
き G 1/10 1/11 1/15 η GGG H8 S8
く H 1/10 1/11 1/15 θ GGG H9 S9
け I 1/20 1/21 1/25 ι GGG H10 S10
こ J 1/20 1/21 1/25 κ GGG H11 S11
このコードを実行するとき、処理したい元データのあるシートを
アクティブにして、実行してください(今回は、対象データが、この
マクロのあるBook=ThisWorkbook にありますが、元データは 必ずしも
マクロのあるBookである必要はありません)
'’───────────────────────── 標準モジュール
Option Explicit
Sub 表を日付別にBookに分ける()
Dim Path As String
Dim Sht1 As Worksheet
Dim Sht2 As Worksheet
Dim Rng1 As Range
'元データのあるBookの保存先
Path = ActiveWorkbook.Path & "\"
'元データのあるシートを変数にセット
Set Sht1 = ActiveWorkbook.Worksheets("Sheet1")
'元データ表範囲を変数数にセット
Set Rng1 = Sht1.Range("A1").CurrentRegion
'C列の日付データの種類を 同じシートにリストアップ
Rng1.Item(1, "AA").CurrentRegion.ClearContents 'リスト先クリア
Rng1.Columns("C").AdvancedFilter xlFilterCopy, _
CopyToRange:=Rng1(1, "AA"), Unique:=True
'日付け別にdataを抽出、新規BookにCopy
Dim newBook As Workbook
Dim Rng2 As Range
Dim c As Range
Dim i As Long
Set Rng2 = Rng1.Item(1, "AA").Resize(2) '抽出条件範囲
Set Rng1 = Intersect(Rng1, Rng1.Offset(, 1)) 'A列を除外
For i = 2 To Rng2.CurrentRegion.Count
'シートが1枚のBookを作成
Set newBook = Workbooks.Add(xlWBATWorksheet)
Set Sht2 = newBook.Worksheets(1)
'データ抽出転記
Rng1.AdvancedFilter xlFilterCopy, _
CriteriaRange:=Rng2, _
CopyToRange:=Sht2.Range("B1")
newBook.SaveAs Path & Format$(Rng2.Item(2), "mm-dd") & ".xls"
Set newBook = Nothing
'---次の抽出処理のために、日付リストを1つ上にシフトする
Rng2.Item(2).Delete Shift:=xlShiftUp
Set Rng2 = Rng2.Item(1).Resize(2)
Next
MsgBox "処理完了"
End Sub
A列に ABCを書き込む処理コードはご自分で考えてみてください。
|
|