VLOOKUPではできない、検索値が範囲内で重複している場合

検索値に対する他の列から値を返して表示させるのはVLOOKUP関数でできます。
しかし選択範囲内で検索値が重複してある場合、VLOOKUPでは検索した一番最初の結果しか返してくれませんので、2個目以降の値を返してくることができません。

そんなときに使うと便利な関数です。

返した値の重複が何個あるか分からない場合、縦方向に並べるのは不要な空白セルができて見栄えが良くないですよね。
横方向に並べると良いと思います。

どういうことかというと




下図のように検索したい果物がA列にあり、表示させたい売上日がB列にある場合、
「りんご」で検索した結果は、7月1日、7月8日、7月9日、7月12日、となるわけです。
しかし返される値が必ずしも4件ではなく、1件のこともあれば3件のこともあるわけです。
そういった場合、さらに以下の図をご覧ください。

0719_1

このように横方向に関数を入れておけば、見栄えが良いと思います。
検索値のE列には不要な空白セルが入りません。

0719_2

「F2」に以下の関数を挿入します。

=IFERROR(INDEX($B$2:$B$14,SMALL(IF($A$2:$A$14=$E2,ROW($A$2:$A$14)-1),COLUMN(A1))),"")

配列なので「Ctrl+Shift+Enter」で確定し、式の前後にカッコ{}を表示させてください。

あとは下方向と右方向へオートフィルコピーすれば出来上がりです。

・INDEX B列の範囲を指定
・IF A列の範囲内にE列と同じものを探す
・ROW A列の範囲内の行番号を返す
・SMALL IFとROWで探した結果を小さい順で返す
・COLUMN 小さい順を指定するときの順番の役割
・IFERROR 該当しない結果だった場合空白を返す

とこんなところです。