質問: excel 関数 一度抽出された値を検索対象から外すには? excel 関数 一度抽出された値を検索対象から外すには? excelの関数について教えて頂きたいことがあります。例えばある検索範囲があり、vlookupか何かで対象の値を引っ張ってきたいのですが、検索値に対象となる値が複数ある場合、一度抽出された値を検索範囲から外し、次のvlookupではそれ以外の対象となる検索値から値を引っ張る、そしてそのまた次のvlookupでは既に抽出された2つの値を対象から外し検索値を探す、そしてそのまた・・・といったような関数の設定は可能でしょうか? もう少し詳しく状況を説明しますと、日付の"年"と"月"を検索値とし、範囲に該当する値が複数ある時に(仮に検索値を"2010年3月"とし、検索範囲の中に2010年3月1日、2010年3月8日、2010年3月15日を=year()&"/"&month()で表示させた値がある場合)、=vlookup("2010年3月",a:b,2,false)でまず一つ目を抽出し、次のvlookupでの検索の時に一つ目を検索対象から外して再度検索させ、さらに次では一つ目と二つ目を検索対象外として検索させたい、と考えています。 どなたかこのような関数の組み方をご存知の方、教えて頂きたく思います。別にvlookupにはこだわりませんので、近い方法でもいいのでどうぞ宜しくお願いします。
回答: 3月のデータがたくさんあるときにvlookup関数を使ってそのようなことをするには複雑な式になってしまうでしょうし、データがたくさんになれば対応ができません。同じ月のデータがあるときにそれを抽出するためには次のようにすればよいでしょう。 例えばa列の2行目から下方に日付が、b列の2行目から下方には=if(a2="","",year(a2)&"/"&month(a2))の式で下方にオートフィルドラッグコピーしたものが表示されているとします。また、c列には別の項目のデータが例えば氏名が入力されているとします。 作業列を使って対応するのが簡単です。 例えばe2セルには次の式を入力して下方にオートフィルドラッグします。 =if(b2="","",b2&countif(b$2:b2,b2)) そこで例えば2010年3月のc列にあるデータを抽出したい場合にはvlookup関数の代わりに次のような式を入力して、下方にオートフィルドラッグします。 =if(countif($e:$e,"2010/3"&row(a1))=0,"",index($c:$c,match("2010/3"&row(a1),$e:$e,0))) これで2010年3月のデータを連続して抽出し、表示させることができます。