• ベストアンサー

関数で、最大値のあるセルの列を表示したい

エクセルの関数について教えてください。 セルH1に関数を使って、列A、列C、列E、列Gの最大値を出しました。 その下のH2のセルに、関数を使って、列A、列C、列E、列Fの最大値のある列(A,B,C,Dのいずれか)を表記させたいのですが(下記のように)、可能でしょうか?   A B C D E F G H 1 10 ※ 28 ※ 66 ※ 26 99 2 56 ※ 29 ※ 89 ※ 28 A 3 99 ※ 12 ※ 66 ※ 10 (列Hが上記のようになるようにしたいのです。)

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。Wendy02です。 >ちなみに最大値が複数ある場合、両方表記させることは可能でしょうか?(A,Bのように) 元の式からの展開ですと、あまりきれいにいきませんね。 #3さんのほうが、良いかもしれません。 例えば、 =IF(COUNTIF($A$1:$G$3,$H$1)>=ROW(A1),SUBSTITUTE(ADDRESS(1,SMALL(INDEX(($A$1:$G$3=$H$1)*COLUMN($A$1:$G$3),,),COUNTA($A$1:$G$3)-COUNTIF($A$1:$G$3,$H$1)+ROW(A1)),4),"1",""),"") こんな風にして、フィル・ドラッグ(下)で、式をコピーすれば、その数だけ出てきます。 フィル・ドラッグ(右)にするのでしたら、 =IF(COUNTIF($A$1:$G$3,$H$1)>=COLUMN(A1),SUBSTITUTE(ADDRESS(1,SMALL(INDEX(($A$1:$G$3=$H$1)*COLUMN($A$1:$G$3),,),COUNTA($A$1:$G$3)-COUNTIF($A$1:$G$3,$H$1)+COLUMN(A1)),4),"1",""),"") とすれは、セルに1つずつ出てきます。 こういうようになると、ユーザー定義関数のほうがきれいにまとまりますね。

kotatsu-neko
質問者

お礼

ありがとうございます。何度もお手を煩わせて申し訳ありませんでした。

その他の回答 (3)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

=REPT("A",$H$1=MAX(A:A))&REPT("C",$H$1=MAX(C:C))&REPT("E",$H$1=MAX(E:E))&REPT("G",$H$1=MAX(G:G))

kotatsu-neko
質問者

お礼

ありがとうございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 うーん、思ったよりも難しいですね。 それは、最大値が複数ある場合の処理です。 列の大きい方を出す場合 H2: =SUBSTITUTE(ADDRESS(1,MAX(INDEX((A1:G3=H1)*COLUMN(A1:G3),,)),4),"1","") 列の小さいほうを出す場合 =SUBSTITUTE(ADDRESS(1,SMALL(INDEX((A1:G3=H1)*COLUMN(A1:G3),,),COUNTA(A1:G3)-COUNTIF(A1:G3,H1)+1),4),"1","")

kotatsu-neko
質問者

お礼

ありがとうごうざいます。 かなり複雑な関数になってしまうんですね。(もう私の理解能力を超えているので、このままコピペさせていただこうかと思います。) ちなみに最大値が複数ある場合、両方表記させることは可能でしょうか?(A,Bのように)

noname#256877
noname#256877
回答No.1

こんな方法いかがでしょうか? 1)4行目に各列の最大値をセットする   A4 = Max(A1:A3) 2)H2のセルに   =CHOOSE(MATCH(H1,A4:G4,0),"A","B","C","D","E","F","G")

kotatsu-neko
質問者

お礼

早速のご返答ありがとうございます。 実は、この作業をしたいファイルが複数(それもかなりたくさん)あり、なるべく簡単に作業を進めたいのです。

関連するQ&A