プロが教える店舗&オフィスのセキュリティ対策術

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です。
よろしくお願いします。

A 回答 (2件)

MATCH関数を使用しませんが、D9の書式を日付にして、


=MAX((A2:A8)*(C2:C8=1)*(B2:B8="肉類"))
と、入力してShift+Ctrl+Enterキーで入力完了してみてください(配列式になります)。
    • good
    • 14
この回答へのお礼

回答ありがとうございます。
早速試してみた所、うまく行きました。
またいろいろと聞く機会があると思いますので、よろしくお願いします。
ありがとうございました。

お礼日時:2009/01/20 17:25

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列でドラッグして、それぞれの行
と同じ内容の直近の日付を返します。
    • good
    • 6
この回答へのお礼

回答ありがとうございます。

今回は、回答1の方法を使わせてもらうことにしました。
MAX関数を使うということが分かり、非常に助かりました。
また質問する機会があると思いますので、よろしくお願いします。
ありがとうございました。

お礼日時:2009/01/20 17:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A