- ベストアンサー
関数で、最大値のあるセルの列を表示したい
エクセルの関数について教えてください。 セル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が上記のようになるようにしたいのです。)
- みんなの回答 (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つずつ出てきます。 こういうようになると、ユーザー定義関数のほうがきれいにまとまりますね。
その他の回答 (3)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
=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))
お礼
ありがとうございました。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 うーん、思ったよりも難しいですね。 それは、最大値が複数ある場合の処理です。 列の大きい方を出す場合 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","")
お礼
ありがとうごうざいます。 かなり複雑な関数になってしまうんですね。(もう私の理解能力を超えているので、このままコピペさせていただこうかと思います。) ちなみに最大値が複数ある場合、両方表記させることは可能でしょうか?(A,Bのように)
こんな方法いかがでしょうか? 1)4行目に各列の最大値をセットする A4 = Max(A1:A3) 2)H2のセルに =CHOOSE(MATCH(H1,A4:G4,0),"A","B","C","D","E","F","G")
お礼
早速のご返答ありがとうございます。 実は、この作業をしたいファイルが複数(それもかなりたくさん)あり、なるべく簡単に作業を進めたいのです。
お礼
ありがとうございます。何度もお手を煩わせて申し訳ありませんでした。