2017-03-31 19 views
0

VBAで等しい次元の2つの配列を作成しました(2つの配列を作成するために2回使用するコードの一部です)。 vba内の新しい配列に一致する値の場所を格納するための他の関数/ループ。エラーの場合(存在しない値)、適切なフラグ(0)。vbaに2つの異なる配列の一致する位置のストアを格納する配列

例えばのために

:私は取得する方法を探していますARRAY1(米国、英国、シンガポール、中国) ARRAY2(インド、米国、英国、ニュージーランド) ARRAY3(0,2,3,0)

to array3 {}

ありがとうございます!例えば

Dim wcountryarray() as variant 

ReDim wcountryArrayname(1 To maxima5 * Site_countmax * wacountmax) As Variant 

counter = 100 

lsitetype = 1 

For Country_count = 1 To wacountmax 

For within_site = 1 To Site_countmax       

counter = counter + 2   

For Site_types = lsitetype To maxima5 + lsitetype - 1 


    wcountryArrayname(Site_types) = WB2.Sheets("Data Input").Cells(Site_types + counter, 2).Value & "|" & _ 
    WB2.Sheets("Data Input").Cells(Site_types + counter, 3).Value & "|" & _ 
    WB2.Sheets("Data Input").Cells(Site_types + counter, 4).Value 

Next Site_types 

counter = counter + 30 - maxima5 - (maxima5 - 1) 

columns_Data = columns_Data - 1 

Site_types = Site_types - 1 

lsitetype = Site_types + 1 

Next within_site 

counter = (100 * (Country_count + 1)) - Site_types 

Next Country_count 
+0

わかりません。 1つの配列要素の位置を別の配列に配置する。 – SJR

+0

配列式を使用して、それを「単純化」することができます。結果はシートに戻りますか? – Slai

+0

いいえ、結果は配列のまま残り、さらに場所ごとに2つの異なる配列を比較するために使用されます。これを使って配列1のUSAの要素と配列2のUSAを比較します。 – eeeklavya

答えて

1

、VBAでこれはVariant(1 To 4)配列になり:

a = [IfError(Match({"India","USA","UK","New Zealand"},{"USA","UK","Singapore","China"},0),)] 

Debug.Print Join(a) ' "0 1 2 0" 

や配列を持つ:私はかなりあなたの例に従いますが、あなたは `アプリケーションを使用することができます

array1 = Array("USA", "UK", "Singapore", "China") 
array2 = Array("India", "USA", "UK", "New Zealand") 
array3 = Evaluate("IFERROR(MATCH({""" & Join(array2, """,""") & """},{""" & Join(array1, """,""") & """},0),)") 

Debug.Print Join(array3) ' "0 1 2 0" 
関連する問題