プロが教えるわが家の防犯対策術!

Excelで最大値の入っている数値の右側にある項目名を拾いたい。

下のようなデータがあります。(A列は年、Bは何かの生産量・・とします)

1 2000 7
2 2001 11
3 2002 14
4 2003 10
5 2004 9
6 2005 8

生産量(B列)の最大値を求めるのは=MAX(B1:B7)で"14"が得られると思いますが、求めているのは"14"の入っている年の"2002"という数字を隣のC1に入れたいと思います。
どのような関数が必要でしょうか?

A 回答 (4件)

A列とB列のデータが逆ならば、



=VLOOKUP(MAX($A$1:$A$6),($A$1:$B$6),2,FALSE)

↑これでできると思いますが、、ダメですよね?w
    • good
    • 3
この回答へのお礼

お忙しいところレスをありがとうございます。
VLOOKUPでA列をC列にコピーして拾い上げることができました。
早々にお返事をくださいましたこと感謝申し上げます。

お礼日時:2010/02/04 20:01

質問タイトルの通り、拾いたい項目名が右側にあるのであれば


(つまりA列が数量、B列が年であれば)

=VLOOKUP(MAX(A1:A7),A1:B7,2,FALSE)

が使えたのですが、質問文を読むと左側に項目名があるようですね。
ということであれば以下の式でどうでしょうか。

=OFFSET(A1,MATCH(MAX(B1:B7),B1:B7,FALSE)-1,0)

以下は式の説明です。
=OFFSET(基準セル,行数,列数)
は「基準セルから行数分下、列数分右」に移動したセルの値を返します。
基準セルは、先頭行の年が入っているセル(A1)とします。
行数は、MATCH(検索値,検索範囲,[検索の型])が
「検索値が検索範囲の何番目に存在するか」
を返しますので、これを使って求めます。
実際に3行目が最大の場合、基準のA1から3行下に移動したら
4行目に移動してしまうので、MATCHで求めた値から1を引きます。
列数は、右には移動しないので0とします。

注意点としては、最大値が複数行ある場合、上の方が優先されます。
例えば2002年と2004年の生産量が全く同じ場合、2002年を返します。
    • good
    • 4
この回答へのお礼

お忙しいところ、レスをつけてくださってありがとうございます。don9don9さんの回答の前半を読んで、そうだ、VLOOKUPが使えた!と思って、右にA列をコピーして無事に拾い上げることができました。
後半を読んでなくて、ベストアンサーに選べなくてすみません・・。でも、次回はこの方法を試してみたいと思います。詳細な説明をありがとうございました。

お礼日時:2010/02/04 20:00

こんばんは!


一例です。

↓の画像でC2セルに表示するようになりますが・・・

C2セルの数式は
=INDEX($A$2:$A$1000,MATCH(MAX(B2:B1000),B2:B1000,0))
にしています。
(エラー処理はしていません)
A列の1000行目まで対応できるようにしていますが、
データ量によって範囲指定の領域はアレンジしてみてください。

以上、参考になれば幸いです。m(__)m
「Excelで最大値の入っている数値の右側」の回答画像3
    • good
    • 17
この回答へのお礼

お忙しいところ、レスをつけてくださってありがとうございます。tom04さんの回答をベストアンサーに選ばせていただきました。次回からはこの方法を試してみたいと思います。

お礼日時:2010/02/04 19:57

No.3です!


たびたびすみません。

投稿した後に気づいたのですが、
最大値が複数ある場合は一番上のデータしか拾い出ししませんので
万一、複数ある場合は他の方法を考えなければならないと思います。

どうも何度も失礼しました。m(__)m
    • good
    • 7
この回答へのお礼

何度もありがとうございます。
Excelって使いながらでないと勉強できませんよね。がんばってマスターしたいと思います。

お礼日時:2010/02/04 20:02

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

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


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