重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

範囲内で2番目、3番目に低い値を、別セルへの表示する方法を教えて下さい。
例、
15
15
15
18
18
20
この範囲で、2番は18、3番は20
となるような式を作りたいです。
(SMALL)だけですと、2番目も15と表示されました。
よろしくお願いいたします

A 回答 (4件)

こんな感じでしょうか。

ただし、応用が利かないやり方です。
1番目はMIX関数で求めることができます。2番目はその値を基に求めます、さらに3番目は2番目の値を基に求めます。なので、いきなり10番目を求めることはできません。

【C2セル】=SMALL($A:$A,COUNTIF($A:$A,"<="&MIN($A:$A))+1)
【D2セル】=SMALL($A:$A,COUNTIF($A:$A,"<="&C2)+1)
「範囲内で2番目、3番目に低い値を、別セル」の回答画像2
    • good
    • 0
この回答へのお礼

ありがとうございました。
他のセルを使わず直接表示できる式でしたのでベストアンサーにさせて頂きました。

お礼日時:2017/11/01 07:43

添付図参照


B1: =IF(COUNTIF(A$1:A1,A1)=1,A1,"")
E1: =SMALL(B$1:B$6,D2)
「範囲内で2番目、3番目に低い値を、別セル」の回答画像4
    • good
    • 0
この回答へのお礼

ありがとうございます!
参考になりました。

お礼日時:2017/11/01 07:51

No.1の回答者さんと似ていますが。


作業列を使うことで、SMALL関数で指定できます。
数値の範囲が決まっていることが前提です。

B列を作業列にしています。
=IF(ROW()=MATCH(A2,$A$2:$A$7,0)+1,A2,"")

SMALL関数の配列はB列の範囲を指定します。
「範囲内で2番目、3番目に低い値を、別セル」の回答画像3
    • good
    • 0
この回答へのお礼

ありがとうございます。
参考になりました。

お礼日時:2017/11/01 07:50

こんばんは!



具体的な配置が判らないので、やり方だけ・・・

↓の画像のようにA列にデータがあるとします。
安直な方法ですが、作業列を設けるのはどうでしょうか?

作業列B2セルに
=IF(COUNTIF(A$2:A2,A2)=1,RANK(A2,A:A,2),"")
という数式を入れフィルハンドルでこれ以上データはない!というくらいまで下へコピーしておきます。

そしてE2セルに
=INDEX(A:A,MATCH(SMALL(B:B,ROW(A2)),B:B,0))

という数式を入れ下へフィル&コピーしています。
(エラー処理はしていません)

※ 作業列が目障りであれば遠く離れた列にするか
非表示にしておきます。m(_ _)m
「範囲内で2番目、3番目に低い値を、別セル」の回答画像1
    • good
    • 0
この回答へのお礼

ありがとうございます。
作業列を作る方法も有るのですね。参考になりました。

お礼日時:2017/11/01 07:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!