和風スパゲティのレシピ

日本語でコーディングするExcelVBA

Dictionary

新着順 人気順

Dictionaryの要素(Key/Item)をセルに出力する

Dictionaryの要素をシートに出力する方法を解説します。For Each文で1要素ずつセルへ出力していく方法と、要素を配列を介して一括でセル範囲に出力する方法の2つがあります。状況に応じて使い分けてください。

Dictionary.Keys(i) .Items(i)と書いてはいけない

DictionaryのKeys/Itemsメソッドは全key/itemを1次元配列にして返すメソッドです。つまりKeys(i)はKeysの「引数i」ではなく、Keysが返す配列の「添字i」ということです。Keys(i)を使用したコードは都度配列を生成するため非常に遅くなります。

Dictionaryで要素ごとのデータ数をカウントする

Dictionaryオブジェクトを使って、要素ごとのデータ数をカウントする方法を解説します。Excel上では、要素ごとのCOUNTIFや、ピボットテーブルで行う処理ですが、VBAの内部で行う場合は Dictionaryを使うと、簡単に書けて処理速度も高速です。

CollectionとDictionaryの違い

CollectionとDictionaryの違いについて解説します。どちらも「複数のデータをまとめて持つ仕組み」で、KeyとItemをペアで格納することができますが、Dictionaryが完全上位互換と言ってよい性能を持っています。

39本目:数値リストの統合(マージ)

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

セル検索の速度比較 - Find/Match/Dictionary

セルの検索を行う手段は様々で、Range.Find、WorksheetFunction.Match、セル範囲.Formula = "=MATCH"、Dictionary(連想配列)オブジェクトなどが挙げられます。これらの速度やコーディングコストを検証してみます。

DictionaryをKeyだけでCollectionのように使う

DictionaryはKeyとItemをセットで持っておく仕組みですが、Itemを無視してKeyだけを一次元配列として使用する方法があります。このKeyのみDictionaryはCollectionの上位互換なので積極的に活用しましょう。

ジャグ配列(配列の配列)を二次元配列に変換する

配列の中に配列が入っている、いわゆるジャグ配列を、ただの二次元配列に変換するコードを紹介します。DictionaryのItemに配列を入れた際、Itemsで生成されるジャグ配列をセルに一括出力するなどに活用できます。

Dictionaryで列番号を管理する

列番号を管理する方法として、列挙型変数Enumを用いる他に、Dictionaryを用いる方法もあります。特に「同じコードをレイアウトの異なるシートに対して実行できる」のが強みですので一度使ってみてください。

Dictionaryを新規シートに出力して中身を確認する

Dictionaryは中身の確認が難しい欠点があります。ローカルウィンドウでKeyは見れますがItemは見ることができません。この対策として「Dictionaryを新規シートに出力する」マクロを用意するのがおすすめです。

Dictionaryの格納件数による速度低下検証

処理が超速なことで知られるDictionaryですが、実はデータ件数が増えすぎると急に遅くなるという欠点もあります。件数の二乗に比例して処理が遅くなる傾向があるため、Dictionaryを分割するなどで対応します。

DictionaryのKey/Itemを配列(Array)に変換する

Dictionaryの中身を配列に変換する場合、Key/Itemをそれぞれ一次元配列にするだけなら、Keys/Itemsメソッドを使用するだけでOKですが、二次元配列にしたい場合などはひとつずつ代入していく必要があります。

Dictionaryを用いたデータ集計 - Itemに配列版

Dictionaryの活用例として、データ集計マクロを作成してみます。Itemに値を保管する手段としてDictionary/配列/クラスなどがありますが、本ページでは「Itemに一次元配列を格納」パターンを紹介します。

Dictionaryを用いたデータ集計 - Itemにクラス版

Dictionaryの活用例として、データ集計マクロを作成してみます。Itemに値を保管する手段としてDictionary/配列/クラスなどがありますが、本ページでは「Itemに自作クラスを格納」パターンを紹介します。

Dictionaryを用いたデータ集計 - 列ごとにDictionary作成版

Dictionaryの活用例として、データ集計マクロを作成してみます。Itemに値を保管する手段としてDictionary/配列/クラスなどがありますが、本ページでは「列ごとにDictionaryを作成する」パターンを紹介します。

配列から重複を削除する - Unique/Dictionary

一次元配列から重複を削除する方法を解説します。Excel365、Excel2021以降のバージョンであれば、 WorksheetFunction.Uniqueを使用するのが簡単です。 旧バージョンとの互換性やその他カスタマイズを行いたい場合は、 Dictionaryオブジェクトを使用して重複…

シート内のすべての数式とその入力範囲を取得する

シート内のすべての数式と、その式が入力された範囲を取得するコードを紹介します。Key:数式、Item:セル範囲のDictionaryとして取得します。FormulaR1C1を利用することで相対参照式を同一として判定できます。

17本目:重複削除(ユニーク化)

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

セル範囲をDictionaryに格納する

セル範囲をDictionaryに格納する方法を解説します。一括で入力する方法はないため、ループ文を使って愚直に代入していきます。テーブル形式の場合はDictionaryを列分用意するか、Itemを配列にして対応します。

57本目:ファイルの更新日時

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

重なった図形を最前面のもの以外削除する

同じ図形が同じ場所に大量に溜まったファイルを整理する際に、最前面の図形以外を削除するコードを紹介します。タイプや位置などの複数要素の一致判定にはDictionaryを使用するのが便利です。

Scripting Runtime の参照設定方法

DictionaryやFSOを使用する際As FileSystemObject/Dictionaryとデータ型を明示するにはScripting Runtimeの設定が必要です。設定すれば選択肢入力が活用できるため、自分でコードを書く場合は必ず設定を行いましょう。

Scripting Runtimeの参照を自動化するマクロ

Scripting Runtimeの設定をVBAから行う場合はVBProject.References.AddFromGuidメソッドを利用します。Scripting Runtime以外のライブラリもIDを調べれば自動化できますので流用してみてください。

「Collection&Dictionary」配布資料&配信アーカイブ

第5回 和風スパゲティ勉強会「Collection&Dictionary」の配布資料と配信アーカイブを共有します。前回の配列(Array)に続いてExcelVBA配列トリオを一挙に解説しました。復習にお役立てください。

8/28(木)21:00~ 第5回 和風スパゲティ勉強会「Collction&Dictionary」

和風スパゲティ勉強会 第5回のテーマは「Collction&Dictionary」ということで、使いこなせば強力な武器になるこの2つの機能を徹底解説します!同時開催の配列入門もご視聴いただき、3つ一気にマスターしましょう。

Dictionary内の配列は要素の書き換えが出来ない

Dictionary内の配列は要素の書き換えが出来ません。Dictionary内の配列に代入した値が反映されない、Dictionary×配列によるクロス集計の結果が0になってしまうなどにお悩みの方はこの罠を疑ってください。

For Each文の中身を途中でいじるとどうなるか

今日はFor Eachステートメントで遊んでみようと思います。For Eachステートメントの変数を途中で変更したり、対象のCollectionを追加・削除して、それがForEachのループに影響するか試してみます。

VBA課題009「人事データからクロス表を作成」マクロ2回答コード

コミュニティ「Excel-Fun.xls*」にて毎月出題される、VBAの問題に対する私の回答ソースコードを掲載いたします。今回掲載するコードは第6回課題共有会の課題でもあった「人事データからクロス表を作成」のマクロ2です。

DictionaryのItemからKeyを取得する

DictionaryはKeyからItemを取得するオブジェクトですが、逆にItemからKeyを取得する方法を解説します。といってもそんなプロパティはありませんので、自作関数を作ってゴリ押しするよりほかありません。

Dictionaryの省略記法一覧(Item/Keys/Add)

DictionaryのItemプロパティ、Keysメソッド、Addメソッドにはそれぞれ省略記法が存在します。各省略記法のメリット・使い方と、省略した場合に発生する可能性のあるエラーなど注意点について解説します。