ワークブック ファイルの例に基づいて編集する
SAMPLE Milestone Report.xlsx ファイルの列 M に、次の式を配置します。
=INDEX('[SAMPLE Master Active.xlsx]Sheet1'!$1:$4,MATCH($A2,'[SAMPLE Master Active.xlsx]Sheet1'!$A:$A,FALSE),MATCH(M$1,'[SAMPLE Master Active.xlsx]Sheet1'!$1:$1,FALSE))
次に、この数式をコピーして残りの行/列に貼り付けることができます。#N/A
列ラベルが正確に一致しないため、それらの一部が返されます。従業員番号が見つからない場合、同様のエラーが返されます。
Index 関数は、Master Active ワークブックのシート 1 の行 1:4 を参照します。
次の引数は、MATCH() 関数を使用して、Master Active Workbook のシート 1 の列 A にある従業員番号の行番号を検索します。
次の引数は MATCH() 関数を使用して、シート 1 のマスター アクティブ ワークブックの行 1 にある列ラベルの列 # を見つけます。
このようにして、Master Active ワークブックのすべてのデータを含む範囲を参照し、従業員番号が存在する ROW と列ラベルが存在する COLUMN を動的に識別することができます。次に、Index 関数は、この交差から値を返します。
元の回答
このVLOOKUP
関数には、オプションの 4 番目の引数を含む 3 つの引数が必要です。
- Lookup_Value - これはあなたが探している値です
- Table_Array - これは、検索している範囲/テーブルです
lookup_value
- Column_# - 数式は、
table_array
.
- Range_lookup (オプション) - 近似一致または完全一致のどちらを返すかを Excel に指示します。近似一致を使用する必要がなかったため、常にこれを に設定してい
False
ます。
あなたがする必要があるのは、Column_#
他の基準に基づいて動的な値にすることです。おそらくMATCH()
関数でこれを行うことができます。
次の例では、ワークシート関数の規則を使用していますが、VBA に簡単に変換できます。
=VLOOKUP("steve", "A:C", 3, False)
列 A で「steve」が見つかった行から列 3 の値を返します。
しかし、データが常に列 3 にあるとは限らないと仮定します...「Category」を探していて、それが任意の列にある可能性がありますが、ccolumn ラベルが行 1 にあることがわかっているとしましょう。次に、「3 の代わりに"VLOOKUP...
式で、次のようにします。
Match("Category",'Vacancy_Sheet_Name'!1:1, False)
したがって、最終的な式は次のようになります。
=VLOOKUP("steve", "A:C", Match("Category",'Vacancy_Sheet_Name'!1:1, False), False)
vba では、これは次のようになります。
= Application.WorksheetFunction.Vlookup("steve", "A:C", Application.Match("Category",Sheets("Vacancy_Sheet_Name").Range("1:1"),False), False)
重要な注意:VLOOKUP
の最初の列を常に検索しTable_Array
ますLookup_Value
。データの構造が変更され、lookup_value
が FIRST 列になくなった場合VLOOKUP
は、使用する適切な関数ではありません。INDEX()
このような場合、機能しないため、とMATCH()
関数を組み合わせて使用する必要がありますVLOOKUP
。