2023.05.10スポンサーリンクVBA100本ノック57本目の題材をヒントにDictionaryオブジェクトのデータ(Item)に配列を使う方法について解説します。通常、Dictionaryオブジェクトは1つのKeyに1つのデータ(Item)となりますが、DictionaryオブジェクトのKeyに配列を使うことで、複数のデータ(Item)を紐づけることができます。基本的なDictionaryの使い方についてはこちらの記事をご覧ください。↓↓VBAのDictionaryの基本的な使い方データの重複削除(ユニーク化)をする場合にDictionaryオブジェクトを使う基本的な方法を簡潔に紹介しています。3つのフィールドあり、商品名フィールドには重複データがあります。重複した商品名のうち仕入日が最新ではないものはE列以降に出力します。わかりやすいように商品重複レコード(削除項目)は赤字にしています。コードを実行すると以下のようになります。'コレクションの中にディクショナリデータが追加される。'新たなキーとデータが追加更新される。Subコード概要(10行目)ForNextステートメントで1レコードずつ判別をしていきます。Itemに格納します(15~20行)削除レコードはCollectionオブジェクトに格納されるアルゴリズムです。商品名のKeyがすでに存在すれば、Itemの「仕入日」と「仕入日」フィールドのデータを比較します。仕入日データが既に格納されているItemの「仕入日」より最新ならばディクショナリーのItemは更新(上書き)されます。ディクショナリーに既にあったItemはコレクションオブジェクトに格納されます。仕入日データが最新でなければ、Collectionオブジェクトに格納されます。(23~29行)Collectionオブジェクトに格納されているデータ(仕入日が最新ではないデータ)は【削除項目】に出力されます。Collectionオブジェクトの基本についてはこちらの記事で↓VBAのCollectionオブジェクトの基本Collectionオブジェクトの基本的な使い方が簡潔に理解できます。今回は繰り返し処理と最終行数の取得について紹介します。記事を読み進めていくことで、マクロVBAを使って同一シート内のデータ処理を自動化するために必要なVBAスキルを習得できます。VBA初学者が添付のレジュメを使って一緒に手を動かしながらVBAコードを記述していくことで、自分のペースでじっくり確実に習得することができます。If11~13行目:Dictionaryオブジェクトに各「商品名」をキーにして、データ(Item)を配列にして追加します。データは以下のように格納されます。データを配列にすることで、キーの中にデータ(Item)を複数入れることができます。データ(Item)の中の配列データはDictionaryオブジェクト名(キー)(配列インデックス番号)で取り出すことができます。1).Value)(2)とすればデータ(Item)の配列番号(2)の日付データを取り出すことができます。Array関数Array関数・・Array(引数1,引数2、引数3、・・・)配列として格納するデータをカンマ区切りで指定します。配列データを返してくれます。Array関数の事例ワークシート上の各セルにデータがあります。配列として宣言していないバリアント型変数に、データが配列形式で代入されます。St(0)変数名(配列インデックス番号)で配列データを取り出せます。'コレクションの中にディクショナリデータが追加される。'新たなキーとデータが上書きされる。If15~17行目:既にDictionaryオブジェクトに格納されている配列データのインデックス番号(2)の要素である「仕入日」とワークシート上の「仕入日」を比較します。ワークシート上の「仕入日」がDictionaryに格納されているデータの仕入日より大きければ(日付が最新ならば)、Dictionaryオブジェクトに新たなキーとデータが上書きされます。Dictionaryに元々格納されていたキーとデータはコレクションの中に追加されます。18~20行目:反対にワークシート上の仕入日が小さければ、ワークシートのレコードがコレクションに格納されます。キー自体が存在しない場合は、次の項目に進みます。Next23~29行目:Collectionオブジェクトに格納されている削除項目を5~7列目に出力しています。そもそもCollectionオブジェクトとは、複数の要素の集合です。異なるデータ型を要素とすることができます。筆者オススメの「これは秀逸!」「これは1冊持っとくべき」と思えるExcelVBAの本を紹介しています。ExcelVBAの書籍選びで、どれを選んでよいか迷っておられる方に参考にしていただきたいです。ym-pc.com2023.07.20AddメソッドCollectionオブジェクトのAddメソッドでCollectionオブジェクトにメンバーを追加できます。3).Value)上記コードでCollectionオブジェクトにメンバーが追加されていきます。今回は削除するデータを配列形式で追加しています。スポンサーリンクまとめDictionaryオブジェクトのデータを配列にする方法について解説しました。Dictionaryのデータ(Item)を複数紐づけることができるメリットがあります。参考にしてみてください。テーブル機能1~基本的な使い方~Excelのテーブル機能の基本的な使い方についてまとめています。ExcelExcelフィルター詳細設定【まとめ】~or条件抽出など~Excelの中でも操作が煩雑なフィルターの詳細設定を説明しています。動画を交えて解説しています。Objects)とSQLを使ったCSVファイルの読込とテーブル結合の基本方法について紹介しています。筆者オススメの「これは秀逸!」「これは1冊持っとくべき」と思えるExcelVBAの本を紹介しています。ExcelVBAの書籍選びで、どれを選んでよいか迷っておられる方に参考にしていただきたいです。まとめ1VBAを使用したCSVデータの一括読み込み方法について紹介しています。ExcelExcelマクロ(VBA)で作る管理システム3マクロ(VBA)で仕入管理システムを作成する方法の3回目です。ユーザーフォームのリストボックスの詳しい説明やワークシートへのデータの転記方法を解説しています。汎用性の高いコードです。ご自身の業務に活用してください。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。defined.")}))})();タイトルとURLをコピーしました。