2018.04.13皆様こんにちは、ノグチです。VBAでツールを作るにあたって、リストの重複を除く処理って、悩ましいことの一つですよね。ループを使って、一つ一つ重複チェックをする方法もありますが、リストのデータ件数が多ければ多いほど処理時間が長くなってしまうのが悩ましいところです。ループで重複排除を行おうと思うと、ループに次ぐループで、ソースコードもなんだかゴチャゴチャとしてしまいます。したコードで、かつ処理速度も速くなるような方法は無いものか...そんな時に使えるのが、Dictionaryオブジェクトを使った処理。今回はDictionaryオブジェクトを使ったリストの重複処理方法紹介の第一歩として、Dictionaryオブジェクトをご紹介していきます。連想配列とは?VBAにおける連想配列と配列の違いエクセルVBAのDictionaryオブジェクトとは?VBAでDictionaryオブジェクトを使う準備VBAの参照設定Dictionary型を宣言する参照設定せずにDictionaryオブジェクトを使う場合さいごに連載目次:エクセルVBAのDictionaryオブジェクトでリストの重複を排除する連想配列とは?まず、Dictionaryオブジェクトは、連想配列をVBAで作るためのオブジェクトです。連想配列とはなんぞや?普段の生活ではあまり聞かない言葉ですよね。連想配列は、簡単に言うと数値以外の型のキーと要素がセットになった配列のことです。表で示すとこんな感じです。宇都宮VBAにおける連想配列と配列の違い連想配列と、Array関数で作る配列とは何が違うの?とお考えでしょうか。配列の場合、コンピューターが各要素に対して0,1,2,3...とインデックス(数値)を振ってくれますよね。インデックスが配列におけるキーになっています。連想配列は文字列もキーにすることができます。配列におけるインデックスにあたるモノを、連想配列では任意の文字列や数値でキーとして表現するのです。エクセルVBAのDictionaryオブジェクトとは?先にも述べた通り、Dictionaryオブジェクトは、エクセルVBAで連想配列を作るためのオブジェクトです。Array関数作った配列でインデックスが重複することがないのと同じく、Dictionaryのキーは重複することはできません。キーに指定する文字列または数値は、Dicitonaryオブジェクトの中で必ず一意である必要があります。この、キーは一意でなければならない、という特性を生かすことで、リストの重複を排除する処理が複雑なループ処理を使うことなくできるのです。その方法については、次回以降の記事でご紹介していく予定です。Runtimeを参照設定しておきましょう。VBEのメニューバーにある「ツール」>「参照設定」をクリックして、参照設定の画面を開きます。Runtimeを探して、左側にあるチェックをONにします。OKボタンを押せば、参照設定は完了です。これで、VBAでDictionaryオブジェクトを使えるようになりました。Dictionary型を宣言する参照設定ができたら、VBAでDicitonaryオブジェクトを宣言しましょう。宣言の記述方法はこちら。Dictionaryコードに置き換えるとこんな感じです。Runtimeの参照設定をしなくても使うことができます。その場合は、以下のような宣言とオブジェクト変数への格納が必要になります。CreateObject(“Scripting.Dictionary”)実際のコードに置き換えると、こんな感じになります。CreateObject("Scripting.Dictionary")ただ、参照設定を使うとコーディングの時にクイックヒントが出てきてくれたりするので便利ということもあって、個人的には参照設定をする方法をとることが多いです。さいごに今回は、Dictionaryオブジェクトと、コードで使うための準備をご紹介しました。次回からは、このDictionaryオブジェクトを使った、リストから重複を除く処理の方法をご紹介していきます。【エクセルVBA】AddメソッドでDictionaryオブジェクトにキーと要素を追加する方法エクセルVBAのDictionaryオブジェクトを使った、リストの重複を排除する方法を連載でご紹介しています。今回は、Dictionaryオブジェクトにキーと要素を追加するAddメソッドのご紹介です。tonari-it.com2018.04.24それでは、最後までお読みいただきありがとうございました!連載目次:エクセルVBAのDictionaryオブジェクトでリストの重複を排除するエクセルVBAでリストの重複を排除する方法として、Dictionaryオブジェクトを使った重複排除の方法をご紹介しています。投稿者プロフィールノグチフリーランスPG・SE元製造子会社SE。業務システム保守・導入両方やった経験をお伝えすることで、少しでもシステムや手作業に悩まされる人が減ればいいなぁと日々夢見ております。「コミュニティ+講座」形式で継続性&教え合える環境も提供。!ノンプログラマーがプログラミングスキルを身に着ける支援ををするコミュニティ。セミナー・もくもく会・Facebookグループのサポートで「自らで学び続ける力をつける」支援、「教え合うことで学びの価値を上げる」場の提供をしています。初心者向けエクセルVBAでCSVファイルを取り込む方法丁寧に解説をしていきたいと思います。初回は準備編としてそもそもCSVファイルとは何か、エクセルで開く際の注意点についてお伝えします。2015.11.15Excel・VBA活用術エクセルVBAで大量の画像をまとめてシートに貼り付けるAddPictureメソッドの使い方AddPictureメソッドとFileSystemオブジェクトを使って、指定したフォルダにある画像をまとめてエクセルシートに貼り付ける方法をご紹介しています。この方法で、画像のサイズや位置調整のような面倒なことはVBAに任せてしまいましょう!画像の貼り付け漏れだって防げます。【エクセルVBAでIE操作】hタグなどの要素をタグ名でGetするエクセルVBAでIEを操作する初心者向けのシリーズの6回目です。今回はタグ名で要素をゴソっと取得するgetElementsByTagNameの使い方です。様々なHTML要素を簡単に取得できます。Explorerを操作する初心者向けのシリーズ。今回はエクセルVBAでIEを操作してフォームにユーザー名とパスワードを入力してログインをする方法についてお伝えします。2016.03.24Excel・VBA活用術エクセルVBAでIEを操作するクラスにテーブルのデータを取得するメソッドを追加する方法エクセルVBAでIEスクレイピングをするときに便利なクラスの作り方をお伝えしております。今回は、エクセルVBAでIEを操作するクラスにテーブルのデータを取得してデバッグ出力するメソッドを追加していきます。【エクセル区切り位置】「列のデータ形式」で数字データを文字列・日付形式に変換するエクセルの「区切り位置」を紹介するシリーズ。第三回目は「列のデータ形式」の設定です。先頭がゼロではじまる数字データを文字列に変換する・8ケタの数字データを日付形式に変換する方法を紹介しています。「コミュニティ+講座」形式で継続性&教え合える環境も提供。詳細・お申込はこちら隣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をコピーしました。