こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

特定の数列の最大、最小値を求める

添付図左をご覧ください。
列A~Gの各行に2桁以下(差し当たり、1桁と考えてOKです)の正整数が埋め込まれています。
右方が空白セルの場合もあります。
左方に空白セルはないが、0 が複数連続する場合もあります。
左から右へ、正数が現れたらそこから必ず(間隔が1以上の)昇順に1回以上続きます。
そこで、各行の正数の最小値と最大値をそれぞれ列H、Iに求めたいのです。
セル I2 は =MAX(A2:G2) で問題ないが、セル H2 以下の式が思い付きません。

添付図右は、同左の 0 のセルが #DIV/0! のエラー表示になっています。
此方の場合の セル R3、S3 以降の適切な数式が出来なくて困っています。

必要なら配列数式も歓迎なので、列H、I、R、Sに入力すべき数式を教えてください

ちなみに、Excel 2002、2013 を、私は使用しています。

投稿日時 - 2015-07-19 12:10:12

QNo.9015065

すぐに回答ほしいです

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

いずれも解となる数値は必ず存在する前提で。

H2:単純にゼロの次
=SMALL(A2:G2,COUNTIF(A2:G2,"<1")+1)
I2:最大
=MAX(A2:G2)


R2,S2:ごくシンプルな配列数式で
=MIN(IF(ISNUMBER(K2:Q2),K2:Q2))
=MAX(IF(ISNUMBER(K2:Q2),K2:Q2))
いずれもCtrl+Shift+Enter


#類似形
H2:
=MIN(IF(A2:G2>0,A2:G2))
Ctrl+Shift+enter

投稿日時 - 2015-07-19 20:10:38

お礼

本当にシンプル!
ありがとうございました。

投稿日時 - 2015-07-19 21:08:29

ANo.4

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

元データをMIN関数の括弧内で前処理して範囲内の有効な値より大きな値に置き換えれば目的の最小値を得られます。
MIN関数の括弧内は以下の数式で前加工します。
(A2:G2=0)*(MAX(A2:G2)+1)+A2:G2
但し、この数式は配列値を返すので、そのまま使用するときはCtrl+Shift+Enterキーで確定する必要があります。
I2=MIN((A2:G2=0)*(MAX(A2:G2)+1)+A2:G2) → MIN({1,2,3,4,5,6,7}) → 1
I3=MIN((A3:G3=0)*(MAX(A3:G3)+1)+A3:G3) → MIN({1,2,3,4,4,4,4}) → 1
数式の確定をEnterキーのみで確定するには次のような手法があります。
I2=MIN(INDEX((A2:G2=0)*(MAX(A2:G2)+1)+(A2:G2),0))
I2=SUMPRODUCT(MIN((A2:G2=0)*(MAX(A2:G2)+1)+A2:G2))

右図の#DIV/0!エラーのセルはそのセルの数式を修正して""に置き換えてください。

投稿日時 - 2015-07-19 14:55:46

お礼

勉強になりました。
ありがとうございました。

投稿日時 - 2015-07-19 16:09:55

ANo.2

EXCEL2013ならIFERROR関数があるので

H,R列(最小値)なら
=MIN(IFERROR(A2:G2*A2:G2/A2:G2,10))
で配列数式(Ctrl+Shift+Enterで確定)

I,S列(最大値)なら
=MAX(IFERROR(A2:G2,0))
で配列数式(Ctrl+Shift+Enterで確定)

投稿日時 - 2015-07-19 13:25:15

お礼

お見事!勉強になりました。
ありがとうございました。

投稿日時 - 2015-07-19 16:08:48

ifで0の場合は空白にすればエラーでなくて正常にカウントされるのでは。

投稿日時 - 2015-07-19 12:17:21

補足

それで、「列H、I、R、Sに入力すべき数式」はどうなります?

投稿日時 - 2015-07-19 12:52:25

あなたにオススメの質問