Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11218 / 76735 ←次へ | 前へ→

【71057】Re:一つのファイル・シートから、日付でファイル分割・・・
発言  kanabun  - 12/1/27(金) 11:12 -

引用なし
パスワード
   ▼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を書き込む処理コードはご自分で考えてみてください。

13 hits

【71018】一つのファイル・シートから、日付でファイル分割・・・ hakemaru 12/1/26(木) 12:11 質問
【71019】Re:一つのファイル・シートから、日付でフ... kanabun 12/1/26(木) 12:35 質問
【71030】Re:一つのファイル・シートから、日付でフ... hakemaru 12/1/26(木) 20:53 質問
【71057】Re:一つのファイル・シートから、日付でフ... kanabun 12/1/27(金) 11:12 発言
【71020】Re:一つのファイル・シートから、日付でフ... UO3 12/1/26(木) 13:21 発言

11218 / 76735 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free