データの空白セルを無視して該当するセルの隣のセルの値を上から順に詰めて表示させたい

タイトルがくどい感じになってしまいましたが、昨日の「データの空白セルを無視して上から順に詰めて表示させたい」の応用です。

下図のようにA列にある「りんご」だけを検索してヒットしたら、隣のセルにある日付を拾ってくる、その際空白は無視して上から順番に詰めていきたい、というものです。




0711_1

「E1」セルに以下の関数を挿入します。

=IFERROR(OFFSET($B$1,SMALL(IF($A$1:$A$15="りんご",ROW($A$1:$A$15)),ROW(A1))-1,0),"")

配列なのでカッコ{}を付けるために「Ctrl+Shift+Enter」で確定してください。

「IF」で空白以外「<>""」と指定していたところを、目的のりんごを指定するように「="りんご"」とします。

昨日の式にあった「INDEX」の代わりに「OFFSET」を使っています。

「OFFSET」だと参照先にセル範囲を指定するのではなく、どの位置から探し始めれば良いのか指定するだけなので、この場合「B1」を指定します。(絶対参照を忘れずに「$B$1」)

またタイトル行の1行分が余計なので式の最後で1行マイナスし、「OFFSET」で指定する列はB列から動かないので「0」(ゼロ)を指定します、と最後がこんな感じになります。「-1,0)」