2011-06-24 11 views
0

ある配列内のすべての値を別の配列(Xを含むY)と交差し、新しい配列に値をコピーするVBAコードを作成しようとしています重複した(FinalResults)。これまでのところ、私は次のコードを書いており、それを正しく書く方法に関するいくつかのガイダンスを高く評価しています。VBA :: 1つの配列から別の値へのチェック

Function lnArray(X as Variant, Y as Variant) As Variant 
Dim counter1 As Integer 
Dim data As Integer 
Dim FinalResults() As Variant 

For counter1 = 1 To Max 
    For Each data In X 
     If data.Value = Y.Value Then 
      counter1 = counter1 + 1 
      ReDim Preserve FinalResults(counter1) 
      FinalResults(counter1) = data.Value 
     End If 
    Next data 
Next counter1 
End Function 
+0

元の配列を保存する必要がありますか?彼らのサイズはどれくらいですか? – Dan

+1

私はこの質問の[百万のバリエーション](http://stackoverflow.com/search?q= [vba] +ユニーク+配列)のように感じています。いずれにもインスピレーションを見つけることはできませんか?ほとんどの質問は、一意の値を保持することについて、反対のことをしたいとき、つまり一意でない値を保持することです。上記にリンクされている解決策のいずれかは、うまく配置された 'Not'をどこかに追加することによって、あなたが望むことをするために適応される可能性があります。 –

答えて

2

私は、コードの上に見たとき、私が見た最初のものはMaxが宣言されていないにも初期化もされていないということでした。 Option Explicitが設定されていないと仮定しても、このfor-nextループは1から0まで実行されます。つまり、ループは全くありません。私はあなたが意図したものではないと思いますか?

第2に、FinalResult配列がこの関数でローカルに宣言されているため、結果値の種類を呼び出し関数に返すことはできません。

関連する問題