2018.05.07皆様こんにちは、ノグチです。前回までの複数の記事で、複数のループを使って処理していたリストの重複排除を、下記3ステップでDictionaryオブジェクトを使ったコードに置き換えていく方法をご紹介してきました。今回はの記事は、上記の3ステップ目、Dictionaryオブジェクトに存在するキーと要素を使った値の処理のご紹介として、複数のLoopで書かれたリストの重複排除のコードを、Dictionaryオブジェクトを使ったコードに置き換えていきましょう!ステップ1とステップ2の処理については、下記の記事をご覧くださいね。【エクセルVBA】AddメソッドでDictionaryオブジェクトにキーと要素を追加する方法エクセルVBAのDictionaryオブジェクトを使った、リストの重複を排除する方法を連載でご紹介しています。今回は、Dictionaryオブジェクトにキーと要素を追加するAddメソッドのご紹介です。複数のループを使った重複排除のVBAコードを、Dictionaryオブジェクトとメソッドを使ったコードをに置き換えていく方法をご紹介しています。今回は、指定した値がDictionaryオブジェクトに既に登録されているかどうか?をチェックしてくれる、Existsメソッドのご紹介です。重複を排除したいリストDictionaryオブジェクトを使ったコードに置き換えるDictionaryオブジェクトの宣言をするAddメソッドでDictionaryオブジェクトにキーと要素を追加Existsメソッドで重複の有無をチェックIf文で重複の有無によって処理を分岐させる置き換え後のコード最後に連載目次:エクセルVBAのDictionaryオブジェクトでリストの重複を排除する重複を排除したいリスト前々回の記事でお見せした、こちらのリスト。このリストのB列の品目が同じレコードは在庫数を加算し、重複を取り除いてF、G列に出力したい場合のコードはこんな感じでした。Subでは、このコードをDictionaryオブジェクトを使ったコードに置き換えていきましょう!Dictionaryオブジェクトを使ったコードに置き換えるDictionaryオブジェクトの宣言をするまずは、Dictionaryオブジェクトの宣言をしましょう。Runtimeの参照設定も忘れずに行っておきます。次に、左側で参照していく品目を、Addメソッドを使ってDictionaryオブジェクトに追加しましょう。Dictionaryオブジェクトのキーは品目の値を、要素には右側に出力する行番号をセットしておきます。WithExistsメソッドで重複の有無をチェック右側に品目を追加するのは、左側の処理対象行の品目が右側のリストにある品目と重複しない場合です。Dictionaryオブジェクトには、右側のリストにまだ存在していない品目をキーとして追加していきます。Dictionaryオブジェクトに、指定したキーが存在しているかをチェックするには、Existsメソッドを使うのでしたね。Withこれで重複チェックができます。重複していたら、左側のリストの在庫数を、Dictionaryに登録されているキーの行番号に対応する右側のリストの在庫数に加算(Existsメソッドの返り値がTrueの場合)重複していなかったら品目と右側のリストに出力する行番号をDictionaryオブジェクトに追加して、かつ右側のリストにも出力(Existsメソッドの返り値がFalseの場合)という処理も追加します。With置き換え後のコード上で置き換えていったコードを、元コード同様に読込んだセルの値を変数へ格納しつつ、元のコードと置き換えてみるとこんな感じになります。コードがそっくり入れ替わっていますね。これで、複数のループを使うことなく、リストの重複処理ができるコードに置き換えることができました!最後に今回は、複数のループで書かれたリストの重複処理排除の処理を、Dictionaryを使ったコードに置き換えていきました。次回は、Dictionaryオブジェクトを使って書かれたコードと、複数のループで書かれたコードの処理速度を比較してみたいと思います。複数ループエクセルVBAのDictionaryオブジェクトを使って書かれた重複排除のコードと、複数のループを使った重複排除のコードの処理速度を比較してみました。お手元にリストの重複処理などで「遅いなあ...」と感じるコードがあるなら、参考にしてみてください。tonari-it.com2018.05.17それでは、最後までお読みいただきありがとうございました!連載目次:エクセルVBAのDictionaryオブジェクトでリストの重複を排除するエクセルVBAでリストの重複を排除する方法として、Dictionaryオブジェクトを使った重複排除の方法をご紹介しています。投稿者プロフィールノグチフリーランスPG・SE元製造子会社SE。業務システム保守・導入両方やった経験をお伝えすることで、少しでもシステムや手作業に悩まされる人が減ればいいなぁと日々夢見ております。「コミュニティ+講座」形式で継続性&教え合える環境も提供。!ノンプログラマーがプログラミングスキルを身に着ける支援ををするコミュニティ。セミナー・もくもく会・Facebookグループのサポートで「自らで学び続ける力をつける」支援、「教え合うことで学びの価値を上げる」場の提供をしています。Explorerを操作する初心者向けのシリーズ。今回はエクセルVBAでIEを操作してフォームにユーザー名とパスワードを入力してログインをする方法についてお伝えします。2016.03.24Excel・VBA活用術エクセルVBAでシートモジュールに請求書マクロのデータをコレクション化する処理を書くエクセルVBAでクラスを使って請求書マクロを作るシリーズをお送りしています。今回は、エクセルVBAで請求書マクロのシートのデータをシートモジュール上のインスタンスのコレクションとして格納する方法です。【エクセルVBA入門】繰り返しを使ってデータの転記をするときの2つのポイントエクセルVBAでバラバラの経費精算書からデータを集めるマクロの作り方について解説をしています。今回は、エクセルVBAで繰り返しを使ってデータを転記する方法、またその際の2つのポイントについてお伝えします。2018.06.18Excel・VBA活用術エクセルVBA超入門!プログラミングと変数の基礎中の基礎この記事はVBAの超入門ということで、簡単なVBAプログラムの例を題材にして、プロシージャや変数、コメントなどの基本的なプログラムの書き方とその実行の仕方について理解いただくのを目標にしています。今回は、なぜエクセルとAccessを連携するのが良いのか、またその際の注意点についてお伝えしたいと思います。【エクセルVBA】FileSystemオブジェクトでフォルダ内のサブフォルダ一覧を取得するエクセルVBAでFileSystemオブジェクトを使ってファイルやフォルダの操作をする方法のシリーズです。Each文とコレクションを活用してサブフォルダ一覧を取得する方法です。PMいつも勉強させて頂いております。本件の最終コード欄、一箇所重複ではないでしょうか。PM西尾さまご指摘ありがとうございます。おっしゃる通りですね。修正させていただきました。AMご回答ありがとうございました!混乱解消しました。引き続き、勉強続けてまいります。「コミュニティ+講座」形式で継続性&教え合える環境も提供。詳細・お申込はこちら隣ITを応援する当ブログを「応援したい!」「役に立ったよ!」というお気持ちを、コチラからお支払いただくことができます。日々更新の活力倍増いたします。※PayPalアカウントが必要です。※金額は変更可能です。Platform23HTML・CSS32iPhone・アプリ29Monaca・スマホアプリ開発7PC全般・Windows86PowerPoint・VBA28Python87RPA1VBScript15Vue.js・JavaScript13WEBサービス・クラウド68WordPress・ブログ88Word・VBA42コミュニティ・イベント108セミナーのお知らせ11チャットワーク72データ分析・アクセス解析40仕事・生産性・働き方73動画配信8商業出版21起業・フリーランス72電子書籍・Kindle3運営会社プランノーツは"IT×働き方改革"をお手伝いする会社です。「コミュニティ+講座」形式で継続性&教え合える環境も提供。詳細・お申込はこちら隣ITを応援する当ブログを「応援したい!」「役に立ったよ!」というお気持ちを、コチラからお支払いただくことができます。日々更新の活力倍増いたします。※PayPalアカウントが必要です。※金額は変更可能です。Platform23HTML・CSS32iPhone・アプリ29Monaca・スマホアプリ開発7PC全般・Windows86PowerPoint・VBA28Python87RPA1VBScript15Vue.js・JavaScript13WEBサービス・クラウド68WordPress・ブログ88Word・VBA42コミュニティ・イベント108セミナーのお知らせ11チャットワーク72データ分析・アクセス解析40仕事・生産性・働き方73動画配信8商業出版21起業・フリーランス72電子書籍・Kindle3運営会社プランノーツは"IT×働き方改革"をお手伝いする会社です。RowSourceプロパティとAddItemメソッド2020.01.21GASでGoogleスライドのSlideオブジェクトの概要とその取得方法2020.01.162020.01.24Facebookページいつも隣にitのお仕事タイトルとURLをコピーしました。