• ベストアンサー

VLOOKUPの結果が二つ以上の場合

VLOOKUPの検索結果が2個以上の場合について教えてください。 たとえば、 検索値が商品コード P98701 で その商品の金額が 10,000円 だったり 5,000円 だったりと 同じ商品コードでも金額が違うものが範囲の中のリストに存在します。 検索の結果を合計額ではなくて、10,000円と5,000円と存在する個数分、それぞれ分けて出したいのです。 例)P98701 10,000円 5,000円 何かいい方法はありますでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.2

VLOOKUPは、最初に見つけた値を1つだけ返す関数です 複数の値を得るには、検索範囲を変える必要が有りますが そのために別の関数を使って....など 訳が判らなくなって来ます こういう場合はVBAを使うと簡単に出来たりします サンプル ----------------- Sub TEST()   scl = 1   Do     ac = 5: al = 1     Do       If Cells(al, 1) = Cells(scl, 4) Then         Cells(scl, ac) = Cells(al, 2)         ac = ac + 1       End If       al = al + 1     Loop While Cells(al, 1) <> ""     scl = scl + 1   Loop While Cells(scl, 4) <> "" End Sub ----------------------- 商品コード:A列 金額;B列 検索用コード:D列 検索結果:E列~ の場合です

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

一応、タイトルの質問に対する方法ですが、 A列に、作業列挿入します。 B列に 商品コード、C列に金額の場合 A2に =B2+TEXT(C2,0) で下フィルして商品コードと金額を続けて表示する列を作成 検索するシートには A B C       10000   5000と準備 P98701 B2には =VLOOKUP($A2+TEXT(B$1,0),範囲,列番号,FALSE) で検索させる >検索の結果を合計額ではなくて、10,000円と5,000円と存在する個数分、それぞれ分けて出したいのです。 ならば、オートフィルの機能利用できないですか。

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.1

検索列に同じ名称などが存在するとき、なぜVLOOKUP関数を持ち出すのですか? VLOOKUP関数やMATCH関数は値を1つ返すもので、2つ以上返せないので不適格なのは常識。 ーー だからこの課題は、1条件で該当行を抜き出しと考えればよい。 しかしエクセルは普通では、(該当行)抜き出しに適してないツール(仕組み)です。 作業列を使うが、比較的わかりやすいと思うのは、imogasi方式です。 WEBで「imogasi方式」で照会すれば、私が同類の質問にした回答と他の方が回答したものも見られます。その中には作業列を使わない関数式だけでの回答も有ります。しかし式の意味の解読は難しい。 ユーザー関数を使えば素直な形の関数にできます。 =FINDX(検索語、何番目)のような関数です。 ーー またVBAでFindメソッドを使う方法もあります。 フィルタやフィルタオプションもあります。 ーー 質問者は現状では関数の狭い経験で考えているようなので、この該当行抜き出しという点に絞って、時間をかけて、本やWEBや質問で勉強しする必要があります。 2条件抜き出しを中心にこの質問コーナーには毎日のように質問が出ます。1ヶ月ぐらい質問を見てれば。

すると、全ての回答が全文表示されます。

関連するQ&A