大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAを使って、雛型を使って月ごとに別シート転記するには、月ごとのデータを雛型シートに転記して、雛型シートを別シートにコピーするとできます。転記する月のリストを「Dictionary」を使って作成すると便利です。雛型を使って月ごとに別シート転記する方法について、マスターしていきましょう。

はじめに

この記事では、雛型を使って月ごとに別シート転記する方法について、ご紹介します。

手順としては、

  • 月ごとのデータを雛型に転記
  • 雛型シートを別シートにコピー

という流れになります。

転記する月のリストを作成するには、「Dictionary」を使います。

月のリストが作成できれば、データが増えたとしても同じVBAコードを使って自動で、月ごとに別シート転記することができます。

雛型を使って別シートに転記する方法について、マスターしていきましょう。

では、雛型を使って月ごとに別シート転記する方法について、解説していきます。

この記事を読むメリット

  • 雛型を使って、月ごとに別シート転記する方法がわかります。

目次から見たい項目へ移動すると便利ですよ。

目次

雛型を使って月ごとに別シート転記したい

雛型を使って月ごとに別シート転記してみます。

やりたい内容

やりたい内容は、雛型を使って、月別に別シート転記したい、ということになります。

雛型を使って、月別に別シート転記したい

雛型を使って、月別に別シート転記したいです。

雛型を使って、月別に別シート転記したいです

雛型にデータを転記して、別シートにコピーをします。

雛型にデータを転記して、別シートにコピーをします

次のように月ごとに別シート転記します。

月ごとに別シート転記する

「2022年1月」のデータです。

雛型を使って、月ごとに別シートを転記します

「2022年2月」のデータです。

雛型を使って、月ごとに別シートを転記します

「2022年3月」のデータです。

雛型を使って、月ごとに別シートを転記します

というような感じで、雛型を使って、月ごとに別シート転記したいです。

VBAコードを作成

VBAコードをポイントごとに作成していきます。

雛型を作成

まずは、雛型シートを作成しておきます。

雛型シートを作成

雛型シートを作成します

雛型シートを作成しました。

雛型を使って「2022年1月」を別シート転記

まずは、雛型を使って「2022年1月」のデータのみを別シート転記してみます。

手順は次のようになります。

  • 「2022年1月」のデータを雛型シートに転記
  • 雛型シートを別シートにコピー
  • シート名を変更

VBAコードは、次のようになります。

Sub TEST1()
  
  'シートをクリア
  Sheets("ベース").Range("B3,A6:F9") = ""
  
  Dim A, B
  A = DateSerial(2022, 1, 1) '1日の日付
  B = DateSerial(2022, 1 + 1, 0) '月末の日付
  
  '年月を入力
  Sheets("ベース").Range("B3") = Format(A, "yyyy年m月")
  
  j = 5
  '商品をループ
  For i = 2 To Sheets("DB").Cells(Rows.Count, "A").End(xlUp).Row
    '指定月のデータを取得
    If A <= Sheets("DB").Cells(i, "A") And Sheets("DB").Cells(i, "A") <= B Then
      j = j + 1
      Sheets("ベース").Cells(j, "A") = Sheets("DB").Cells(i, "A") '取引日
      Sheets("ベース").Cells(j, "C") = Sheets("DB").Cells(i, "B") '商品
      Sheets("ベース").Cells(j, "E") = Sheets("DB").Cells(i, "C") '売上
    End If
  Next
  
  'シートを追加
  Sheets("ベース").Copy after:=Sheets(Sheets.Count)
  ActiveSheet.Name = Format(A, "yyyy年m月") 'シート名を変更
  
End Sub

VBAコードを実行してみます。

雛型シートにデータが転記されます。

雛型シートにデータを転記

取引月を転記します。

取引月を転記します

1つ目の取引情報を転記します。

1つ目の取引情報を転記します

2つ目の取引情報を転記します。

2つ目の取引情報を転記します

3つ目の取引情報を転記します。

3つ目の取引情報を転記します

というような感じで、雛型シートにデータを転記することができます。

次は、雛型シートを別シートにコピーします。

別シートにコピー

雛型シートを別シートにコピーします

最後に、シート名を変更します。

シート名を変更

シート名を変更します

シート名を変更しました。

というような感じで、「2022年1月」のデータを雛型を使って別シートに転記できます。

複数月を別シート転記

「2022年1月」、「2022年2月」、「2022年3月」の複数月のデータを別シート転記してみます。

手順は、

  • 「2022年1月」~「「2022年3月」をループ
  • 月ごとのデータを雛型シートに転記
  • 雛型シートを別シートに転記
  • シート名を変更

という流れです。

VBAコードは、次のようになります。

Sub TEST2()
  
  'リストをループ
  For m = 1 To 3
    
    'シートをクリア
    Sheets("ベース").Range("B3,A6:F9") = ""
    
    Dim A, B
    A = DateSerial(2022, m, 1) '1日の日付
    B = DateSerial(2022, m + 1, 0) '月末の日付
    
    '年月を入力
    Sheets("ベース").Range("B3") = Format(A, "yyyy年m月")
    
    j = 5
    '商品をループ
    For i = 2 To Sheets("DB").Cells(Rows.Count, "A").End(xlUp).Row
      '指定月のデータを取得
      If A <= Sheets("DB").Cells(i, "A") And Sheets("DB").Cells(i, "A") <= B Then
        j = j + 1
        Sheets("ベース").Cells(j, "A") = Sheets("DB").Cells(i, "A") '取引日
        Sheets("ベース").Cells(j, "C") = Sheets("DB").Cells(i, "B") '商品
        Sheets("ベース").Cells(j, "E") = Sheets("DB").Cells(i, "C") '売上
      End If
    Next
    
    'シートを追加
    Sheets("ベース").Copy after:=Sheets(Sheets.Count)
    ActiveSheet.Name = Format(A, "yyyy年m月") 'シート名を変更
    
  Next
  
End Sub

実行すると、「2022年1月」のデータを作成できます。

2022年1月を作成

2022年1月を作成できます

実行すると、「2022年2月」のデータを作成できます。

2022年2月を作成

2022年2月を作成できます

実行すると、「2022年3月」のデータを作成できます。

2022年3月を作成

2022年3月を作成できます

2022年3月を作成できました。

というような感じで、複数月のデータを雛型を使って、別シートに転記できます。

月リストを作成して別シート転記

次は、「月リスト」を作成して、雛型を使って別シート転記してみます。

「月リスト」を自動で作成できれば、データベースに入力された日付が変更された場合でも、同じVBAコードで別シート転記できるので便利です。

「月リスト」は「Dictionary」を使って、作成することができます。

手順としては、

  • 「月リスト」を作成
  • 「月リスト」をループ
  • 月ごとに雛型シートに転記
  • 雛型シートを別シートにコピー
  • シート名を変更

という流れになります。

Sub TEST3()
  
  Dim C
  '辞書を作成
  Set C = CreateObject("Scripting.Dictionary")
  
  '年月のリストを作成
  For i = 2 To Sheets("DB").Cells(Rows.Count, "A").End(xlUp).Row
    If C.exists(Format(Sheets("DB").Cells(i, "A"), "yyyy年m月")) = False Then
      C.Add Format(Sheets("DB").Cells(i, "A"), "yyyy年m月"), ""
    End If
  Next
  
  Dim D
  '年月のリストを配列に格納
  D = C.keys
  
  'リストをループ
  For m = 0 To UBound(D)
    
    'シートをクリア
    Sheets("ベース").Range("B3,A6:F9") = ""
    
    Dim A, B
    A = DateSerial(Year(D(m)), Month(D(m)), 1) '1日の日付
    B = DateSerial(Year(D(m)), Month(D(m)) + 1, 0) '月末の日付
    
    '年月を入力
    Sheets("ベース").Range("B3") = D(m)
    
    j = 5
    '商品をループ
    For i = 2 To Sheets("DB").Cells(Rows.Count, "A").End(xlUp).Row
      '指定月のデータを取得
      If A <= Sheets("DB").Cells(i, "A") And Sheets("DB").Cells(i, "A") <= B Then
        j = j + 1
        Sheets("ベース").Cells(j, "A") = Sheets("DB").Cells(i, "A") '取引日
        Sheets("ベース").Cells(j, "C") = Sheets("DB").Cells(i, "B") '商品
        Sheets("ベース").Cells(j, "E") = Sheets("DB").Cells(i, "C") '売上
      End If
    Next
    
    'シートを追加
    Sheets("ベース").Copy after:=Sheets(Sheets.Count)
    ActiveSheet.Name = D(m) 'シート名を変更
    
  Next
  
End Sub

実行すると、月リストを作成できます。

月リストを作成

月リストを作成できます

さらに実行すると、作成した月リストを使って、月ごとで別シートに転記できます。

月ごとで別シートに転記

月ごとで別シートに転記できます

月ごとで別シートに転記できました。

データベースにデータを追加して、自動で転記できるかを確認してみます。

データが増えても自動で転記できる

データを増やして実行してみます。

データを増やして実行してみます

追加したデータを転記できます。

追加したデータを転記できました

追加したデータを転記できました。

このような感じで、「月リスト」を自動で取得できるようにすると便利です。

おわりに

この記事では、雛型を使って月ごとに別シート転記する方法について、ご紹介しました。

手順としては、

  • 月ごとのデータを雛型に転記
  • 雛型シートを別シートにコピー

という流れになります。

転記する月のリストを作成するには、「Dictionary」を使います。

月のリストが作成できれば、データが増えたとしても同じVBAコードを使って自動で、月ごとに別シート転記することができます。

雛型を使って別シートに転記する方法について、マスターしていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す