2011-06-24 31 views
0

我想寫一個VBA代碼,交叉檢查一個數組中的所有值與另一個(X與Y),並將值複製到一個新的數組,如果它是重複(FinalResults)。到目前爲止,我有以下代碼,並且非常感謝有關如何正確編寫它的一些指導。VBA ::從一個陣列檢查值到另一個

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

我覺得這個問題已經在SO上得到了回答[百萬變異](http://stackoverflow.com/search?q= [vba] + unique + array)。你是否能在其中找到靈感?大多數問題都是關於保留獨特的價值,而你想做相反的事情,即保留非唯一價值。任何與上面相關的解決方案都可能適用於通過在某處添加一個良好的「Not」來完成您想要的操作。 –

回答

2

我查看代碼時看到的第一件事是,Max既未聲明也未初始化。即使我假設Option Explicit沒有設置,這個for-next循環從1運行到0,這意味着根本沒有循環。我想這不是你的意圖?

其次是,你的FinalResult數組在本函數中聲明,因此沒有一種結果值可以返回給調用函數。