2011-07-26 10 views
5

私は、選択した参照番号の経済的な詳細を返すために辞書オブジェクトを機能させるのに苦労しています。Excel VBAでの辞書オブジェクトの使用

私は以下の参照番号と対応する値を持っていますが、これをDictionaryオブジェクトを使用して実現できるかどうかは不明ですし、代替案は非常に高く評価されます。

Ref No Amount Price Year 
IB1232 1000 1.23 2011 
IB1231 1000 3.23 2011 
IB1233 1000 3.43 2011 
IB1234 1000 3.43 2011 

私はあなたのようにに言及しているのか分からない

+0

Ref、No、Amount、Price、Yearの各列(A:Dなど)はありますか?どのデータを元に戻そうとしていますか?これは、VLookupを使用できる状況である可能性があります(たとえば、参照番号があり、データシートで参照してその金額を返したい場合など)。 – aevanko

+0

VBAの辞書構造自体については、[this(http://stackoverflow.com/questions/915317/does-vba-have-dictionary-structure)の記事を参照してください。 – JackOrangeLantern

答えて

12

...リファレンスとそれに対応する詳細については、キーと値を形成することによって達成することができるだろうと思ったが、達成することができていませんVBAでのデータ構造としては、VBAのCollectionと呼ばれています(ただし、独自のDitionaryをコーディングした場合は、その場合はコードを使用する必要があります)。

あなたの例が正しいとすれば、キー「IB1232」を使って{1000,1.23,2011}などにアクセスしたいとします。あなたはまたの配列を使用することができるだけでキー

Debug.Print coll.Item("IB1232")(1) 'Prints 1000 
Debug.Print coll.Item("IB1232")(2) 'Prints 1.23 
Debug.Print coll.Item("IB1232")(3) 'Prints 2010 

を経由して目的のレコード(コレクション)を取得

Dim coll as new Collection 
Dim data as new Collection 

data.Add 1000 
data.Add 1.23 
data.Add 2011 

coll.Add data, "IB1232" 

があなたのデータにアクセスするには:あなたは、このようなコレクションのコレクションを作成することで簡単に行うことができますデータ用バリアント

+0

こんにちは、すばらしい応答のためにたくさんありがとう - はい、私はVBAの辞書オブジェクトを参照しています - 私はExcel/VBAを使用してDictオブジェクトを使用してあなたの例を得ることはできません。 –

14

@das_weezul

スクリプトライブラリ内のVBAでDictionaryオブジェクトは、(あなたがそれを使用することの参照を追加する必要があります)があります。ディクショナリには、アクセスしようとする前にキーが存在するかどうかをチェックする機能など、いくつかの追加機能があります。

@Skyコブ

はい、あなたは辞書と上記のすべてのタスクを行うことができます。構文は同じですが、追加するすべての項目にキーを指定する必要があります。

+0

Collectionで動作するように多く管理されています。完全にうまく動作し、結果が明確になりました。 –

関連する問題