2017-11-17 20 views
-2

私は値を保持するためにiとj配列を使用しましたが、多次元配列を使用するか、または別の方法で圧縮する方法がありますか?2D配列を使用するにはどうすればいいですか?

あなたはパラメータを用いて細胞ができ、スタンドアロンのサブにその機能を抽出し検討すべきである
Dim iArray 
Dim jArray 
With wks.Range("B2:B" & p) 
    iArray = .Value 
End With 
With CreateObject("scripting.dictionary") 
.comparemode = 2 
    For Each item In iArray 
     If Not .exists(item) Then 
     .Add item, Nothing 
     End If 
    Next 
     If .Count Then 
      Me.Search1.List = Application.Transpose(.keys) 
     End If 
End With 

With wks.Range("c2:c" & p) 
    jArray = .Value 
End With 
With CreateObject("scripting.dictionary") 
.comparemode = 1 
    For Each item In jArray 
     If Not .exists(item) Then 
     .Add item, Nothing 
     End If 
    Next 
     If .Count Then 
      Me.Search2.List = Application.Transpose(.keys) 
     End If 
End With 
+0

はい、方法があります、多次元配列を使用します。 https://msdn.microsoft.com/en-us/library/d2de1t93(v=vs.90).aspx –

答えて

0

Sub ListUniquesFromRange(rng As Range, lst As Object) 
    Dim iArray, v 
    If rng.Columns.Count > 1 Then 
     MsgBox "single-column range only!", vbCritical 
     Exit Sub 
    End If 
    iArray = rng.Value 
    With CreateObject("scripting.dictionary") 
     .comparemode = 2 
     For Each v In iArray 
      If Not .exists(v) Then .Add v, Nothing 
     Next 
     If .Count Then 
      lst.List = Application.Transpose(.keys) 
     End If 
    End With 
End Sub 

次に、あなたがこれを行うことができます:

ListUniquesFromRange wks.Range("B2:B" & p), Me.Search1 
ListUniquesFromRange wks.Range("C2:C" & p), Me.Search2 
関連する問題