Excel VBA データ自動分類:指定列基準で分類する方法

こんにちは!Excel VBAを使ってデータを自動整理する方法をご紹介します。
「大量のデータから品種やカテゴリごとに分けたいけど、手作業では時間がかかる…」そんな悩み、ありませんか?このVBAコードを使えば、データシートにある情報を自動で読み取り品種やカテゴリ別に専用シートに振り分けることができます。これにより、データ整理の効率が大幅に向上し、手動操作によるミスも防げます。データ管理を効率化し、データ処理をもっとスマートにしましょう!

本記事はVBAコードを丸ごとコピーして利用したい方や、ある程度読める方、他者のコードを参考にしたい方などに向けて記載しておりますので、一つ一つの細かな説明は割愛しております。

使用するデータリスト

まず使用するデータリストについて解説します。データリストは「データシート」のワークシート上に、「№」「品種」「開始時」「開始分」「終了時」「終了分」という構成となっており、今回はデータを13行分作成しました。

VBAの実行結果

VBAを実行すると、下図のようにデータが自動で整理されます。このコードでは、データシートから読み取った品種情報を基にシートを自動作成し、情報をコピーして同じ書式で整理します。

コード★★★(コピーはここ)★★★

コードの全文は左の三角マークをクリックしてください。

コードの解説

このVBAコードは、大きく分けて5つの機能で構成されています。

  1. メイン処理:各処理の呼び出しや基本情報の取得を行います。
  2. 品種情報取得 :データ分別のキーとなる情報を取得します。
  3. ワークシート作成:品種情報をもとにワークシートを作成します。
  4. データ貼り付け:各品種のワークシートへ情報を貼り付けます。
  5. 書式貼り付け:データシートの書式を使って各品種の書式を合わせます。

メイン処理(Sample10)の特徴

コードの25行目で「Category_Name」の値を利用してループ処理を行い、次の26行目で後の処理をループするために変数の初期化を行っています。

品種情報取得(GetCategory)の特徴

コードの9行目で「Scripting.Dictionary」を使用して品種名称を取得する事でリサイズが不要で重複のないカテゴリー名称を取得しています。

ワークシート作成(MakeWorkSheet)の特徴

コードの5~7行目で作成するワークシートの有無を確認しています。その際のエラー回避として5行目に「OnErrorResumeNext」の処理を記述しています。

データ貼り付け(DataPaste)の特徴

このコードでは「RowCounter」でデータの入力行を制御しています。

 書式貼り付け(FormatChange)の特徴

コードの15行目で「CurrentRegion」を使用して表全体を選択し罫線を引いています。

変数とパラメータの詳細説明

  • Category_List: Scripting.Dictionaryオブジェクトを使用して品種名を取得している。
  • Category_Name: Category_Listから品種名のリストを格納し、含まれる品種名称を示す。
  • LAST_R / LAST_C: データシートの最終行と最終列を示し、データ範囲の動的な取得に使用。
  • wsCategory: 各品種用のワークシートを指す変数。
  • RowCounter: データを各ワークシートに貼り付ける際に貼り付ける行番号の制御に使用。
  • rngTable: 書式設定を行う範囲を示す変数。表全体の範囲を動的に取得し、書式設定を適用。

使用している技術

基本:For – Next、二次元配列、Column、Row、Scripting.Dictionary、Application.Index、On Error、Worksheets.Add、Borders、引数、CurrentRegion

まとめ

この記事では、Excel VBAを使ってデータを品種やカテゴリごとに自動で各シートへ転記する方法を紹介しました。VBAコードを活用することで、データの読み込みからシート作成、データの貼り付け、書式の統一までの一連の作業が自動化され、手動操作によるミスも防げます。特に、Scripting.Dictionaryを用いた品種情報の取得や、ワークシートの自動生成などのポイントが効率化に役立ちます。Excelでのデータ整理をもっとスマートにしたい方は、ぜひVBAを活用してみてください。

コメント

タイトルとURLをコピーしました