• ベストアンサー

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

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に入れたいと思います。 どのような関数が必要でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 一例です。 ↓の画像でC2セルに表示するようになりますが・・・ C2セルの数式は =INDEX($A$2:$A$1000,MATCH(MAX(B2:B1000),B2:B1000,0)) にしています。 (エラー処理はしていません) A列の1000行目まで対応できるようにしていますが、 データ量によって範囲指定の領域はアレンジしてみてください。 以上、参考になれば幸いです。m(__)m

kent991230
質問者

お礼

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

その他の回答 (3)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

No.3です! たびたびすみません。 投稿した後に気づいたのですが、 最大値が複数ある場合は一番上のデータしか拾い出ししませんので 万一、複数ある場合は他の方法を考えなければならないと思います。 どうも何度も失礼しました。m(__)m

kent991230
質問者

お礼

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

  • don9don9
  • ベストアンサー率47% (299/624)
回答No.2

質問タイトルの通り、拾いたい項目名が右側にあるのであれば (つまり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年を返します。

kent991230
質問者

お礼

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

  • aleister
  • ベストアンサー率31% (11/35)
回答No.1

A列とB列のデータが逆ならば、 =VLOOKUP(MAX($A$1:$A$6),($A$1:$B$6),2,FALSE) ↑これでできると思いますが、、ダメですよね?w

kent991230
質問者

お礼

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

関連するQ&A

専門家に質問してみよう