質問: 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に入れたいと思います。 どのような関数が必要でしょうか?
回答: 質問タイトルの通り、拾いたい項目名が右側にあるのであれば (つまり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年を返します。