Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


956 / 13644 ツリー ←次へ | 前へ→

【77289】二つの値を格納したい imori 15/7/1(水) 11:19 質問[未読]
【77290】Re:二つの値を格納したい kanabun 15/7/1(水) 13:12 発言[未読]
【77292】Re:二つの値を格納したい imori 15/7/2(木) 14:17 お礼[未読]

【77289】二つの値を格納したい
質問  imori  - 15/7/1(水) 11:19 -

引用なし
パスワード
   お世話になっております。
マクロ初心者です。

以下のようにB列の値とC列の値を
[あ、テスト1]のように一緒にもちたいです。
また値を格納した後、それを取り出したいです。
A列B列に何の値が入っているかは分かりません。

Collectionや配列などで考えてみているのですが、
分かりません。
アドバイスいただけますでしょうか。
AB  C
1あ テスト1
2い テスト2
3う テスト3
4え テスト4
5お テスト5
6か テスト6

よろしくお願いします。

【77290】Re:二つの値を格納したい
発言  kanabun  - 15/7/1(水) 13:12 -

引用なし
パスワード
   ▼imori さん:

>以下のようにB列の値とC列の値を
>[あ、テスト1]のように一緒にもちたいです。
>また値を格納した後、それを取り出したいです。

何番目のデータかを指定して 2つの値を組で得たいときは、配列が便利です。

たとえば、以下では B:C列をひとつの配列に入れていますので、
その何行目何列目を指定すれば 値が得られます。

Sub tryA()
 Dim ary As Variant
 ary = Range("A1").CurrentRegion.Columns("B:C").Value
 
 MsgBox ary(5, 1) '→ 「お」が入っている
 MsgBox ary(6, 2) '→ 「テスト6」が入っている
End Sub

いっぽう、何番目の(何行目の)データか? ではなく、
たとえば B列の「お」に対応する C列のデータを取得したいときは、
Dictionaryオブジェクトを使うと 組データの格納ができます。

Sub tryB()
 Dim dic As Object
 Dim c As Range
 
 Set dic = CreateObject("Scripting.Dictionary")
 For Each c In Range("B1", Cells(Rows.Count, "B").End(xlUp))
   dic(c.Value) = c.Offset(, 1).Value
 Next
 MsgBox "キー「お」の値は " & dic("お") '→ 「テスト5」が返る
End Sub

C列データのほうを キーに登録して、 テスト番号を指定すると、対応するB列の
あ,い,う,え,... を返す風に組むこともできます。

【77292】Re:二つの値を格納したい
お礼  imori  - 15/7/2(木) 14:17 -

引用なし
パスワード
   kanabunさん、
丁寧に教えていただきありがとうございます。

よく理解できました。
感謝いたします。ありがとうございました。

956 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free