|
▼kanabun さん:
>Sub Try2()
> '↓ほんとは 変数には すでに 値が入っているのですが...
> ' ここでは ひとつづ 代入しています。
> Dim AA(1 To 5) As String
> Dim BB(1 To 5) As String
> AA(1) = "りんご": BB(1) = "すいか"
> AA(2) = "みかん": BB(2) = "とまと"
> AA(3) = "すいか": BB(3) = "みかん"
> AA(4) = "すもも": BB(4) = "なし"
> AA(5) = "かき": BB(5) = "くり"
>
> Dim i As Long
> Dim dic As Object
> Set dic = CreateObject("Scripting.Dictionary")
>
> '配列AA() をdicに重複カットして登録
> For i = 1 To UBound(AA)
> dic(AA(i)) = Empty
> Next
>
> 'このなかに 配列BB()のメンバがいるか? ひとつづつ調べる
> '結果を入れる3番目の配列 CC()を用意する(要素数はAAと同じ要素数)
> ReDim CC(1 To UBound(AA)) As String
> Dim k As Long
> For i = 1 To UBound(BB)
> If dic.Exists(BB(i)) Then
> k = k + 1
> CC(k) = BB(i)
> End If
> Next
> '結果の配列CC()を実際に利用された要素数kにリサイズする
> ReDim Preserve CC(1 To k)
>
> '確認
> For i = 1 To k
> Debug.Print CC(i)
> Next
>End Sub
>
>もっとも、
> Excelでは いきなり「配列」があるのではなく、
> シートのデータを配列に格納して...処理をする...
>ということが多いので、
>
>(シートにデータがなければ、配列内容をシートにコピーして、)
>
>「データ」-[フィルタ]-[フィルタオプションの設定]
> で抽出剃る方法もあります。
> Dictionaryでやっていることがわからないときは、
> こちらのほうが、理解しやすいかも?
ありがとうございました。内容は理解しました。うまいコマンドがあって
簡単に串刺し的に検索ができるかなと期待していました。
Existsメソッドは配列内に存在していたときにはtrueを返すということですね。
結局は1ヶづつ検索することになるということですね。
|
|