テーブル名を範囲として使用した2番目の列によるExcel VLOOKUP


11

次の表の例を使用すると、式=VLOOKUP("ABC123456",Table1,3,FALSE)を使用してDemand値を検索できますが、Cust Partフィールドを使用して検索を実行するには、フィールドをCust Partテーブルの最初の列にする必要はありません。Cust Part最初の列を作成することは許容できる解決策ではありません。Partフィールドを使用してルックアップを実行する必要もあり、ハードコードされた範囲(など$B$2:$C$4)を主に好みの問題として使用したくないためです。名前を使用すると、数式が読みやすくなります。これを行う方法はありますか?

ここに画像の説明を入力してください

回答:


14

を使用OFFSETしてTable1の範囲を返すことは可能ですが、1カラムを超えています。たとえば、

=VLOOKUP("AZ12345",OFFSET(Table1,0,1),2,FALSE)

CustPart列でAZ12345を検索し、次の列から値を返します


ここでパーツ列の値が必要な場合、ここにはどのパラメーターを指定する必要がありますか?
zygimantus

10

あなたは組み合わせることができますINDEXし、MATCH同じ結果acheiveするVLOOKUP最初の列に拘束されずに比較します。少し複雑ですが。

=INDEX(Table1[Demand],MATCH("AZ12345",Table1[Cust Part],0))

基本的に、MATCH行番号を見つけINDEXて値を取得するために使用しています。

注:とは異なりVLOOKUP、結果が空白のセルの場合、は空白の文字列ではなくをINDEX返し0ます。


1
「違うVLOOKUP」?空白セルが0に変換されることに関しては、まったく同じように動作します。
underscore_d

1
これは、INDEX MATCHテーブルを使用して見た最初の例です。これにより、数式の可読性が大幅に向上します。OFFSET揮発性のExcel関数であり、余分なオーバーヘッド処理が発生する可能性があるため、回避しようとしました。
ベン

2

次のようなものはどうですか:

=VLOOKUP("ABC123456";Table1[[Cust Part]:[Demand]];COLUMNS(Table1[[Cust Part]:[Demand]]);FALSE) 

これは、より複雑なテーブルであっても、何をしているのかを確認できるようにするためです。さらに、テーブルの構造が変わっても、Cust Part列がDemand列の前にある限り、式は機能します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.