質問: excel match関数で検索範囲内に同じ値の検索値が複数ある場合 match関数で、検索した値が複数ある場合に1つしか出なくて困っています。 (例) a b c d 1 年月日 種類 番号 備考 2 4月1日 肉類 1 3 4月2日 野菜 2 4 4月3日 肉類 1 5 4月4日 果物 2 6 4月5日 野菜 1 7 4月6日 果物 3 8 4月7日 果物 2 9 4月8日 肉類 1 この表で、d9の備考の欄に「種類:肉類、番号:1」と同じものがあった時の日付を、新しい日付で取り出したいのです。 index(a2:a8,(match(b9,b2:b8,0)+match(c9,c2:c8,0))/2) としたのですが、本当は4月3日を取り出したいのですが、4月1日が出てきます。 どのようにしたら良いでしょうか? excel2003です。 よろしくお願いします。
回答: match関数やlookup関数などの検索関数は、最初に見つけたものを返 すことになっています。2番目が欲しいとか全部欲しいとかはできま せん。 index(a2:a8,(match(b9,b2:b8,0)+match(c9,c2:c8,0))/2) 最初に種類が「肉類」だった行と最初に番号が「1」だった行の中間 の日付を返すって書いてありますね。「種類が肉類で番号が1」では ないです。私なら、最近index関数がマイブームなので、 =index(a$1:a8,max(index((b$2:b8&c$2:c8=b9&c9)*row(b$2:b8),0))) みたいな書き方をします。これはd列でドラッグして、それぞれの行 と同じ内容の直近の日付を返します。