2番目に大きな数字(重複のある数字リストのなかから)
数字が列挙されたリストから2番目に大きい数字は何?を知りたいときにどうするか?Large関数を使います。=Large(範囲,順位)=Large(A1:A14,2)これでA1~A14の中で2番目に大きな数字が抜き出されます。ところが、1番大きな数字が2つあったら・・・Large関数だけでは2番目に大きな数字は出てきません。。。そんなときには関数を組み合わせます。みなさんよくご存知のCountif関数の登場です。意外とあちこちで活躍する関数ですね。下図のような重複を含むリストがあります。 このリストを数字の大きい順に抜き出します。 1番目は1番大きい数字なので、普通にMax関数を使います。C1 =Max(A1:A14)2番目はLarge関数とCountif関数を使います。C2 =Large($A$1:$A$14,Countif($A$1:$A$14,">="&D1)+1)分解すると、Countif($A$1:$A$14,">="&D1)+1がLarge(範囲,順位)の順位にあたります。A1~A14の範囲の中でD1(最大値)よりも大きな値はいくつありますか?2番目を計算しているときは1が返ってきます。そこに1を足すと自分の順位になります。後はオートフィルです。ところが、最小値を超えてオートフィルをすると最小値の次のセルの値が#NUMになってしまいます。そこでIf関数を使って直前のセルがリストの最小値だったら空白にするようにします。それが・・=If(D1=Min($A$1:$A$14),"",Large($A$1:$A$14,Countif($A$1:$A$14,">="&D1)+1)If(D1=Min($A$1:$A$14),"",の部分が、もしD1が最小値だったら空白""ですよ、という意味です。 これで最小値の次のセルは空白になりエンドもスッキリです。ところが、その次のセルはまた最大値に戻り、以降ループしてしまいます。そこでIf関数に条件をもうひとつ追加します。=If(Or(D1=Min($A$1:$A$14),D1=""),"",Large($A$1:$A$14,Countif($A$1:$A$14,">="&D1)+1)Or(D1=Min($A$1:$A$14),D1="")直前のセルが最小値、もしくは空白だったら・・・という条件で、Or関数を使います。これでスッキリです。