- ベストアンサー
ある数値に一番近い上の値及び下の値をを抽出する
お世話になります。 表題にあるようなエクセル数式をご教授いただきたいと思います。 (例) 基準となる数値をa2に置きそれに近い上の数値と下の数値をを抽出する。 a b c d e f g 2 400 280 300 380 480 420 500 答え:上の数値420、下の数値380 以上よろしくお願い申し上げます。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
小さい方から(閾値より)小さい個数番目の数,大きい方から大きい個数番目の数をそれぞれ取ってくるので良さそうです。 =IF(A2="","",SMALL(B2:F2,COUNTIF(B2:F2,"<="&A2))) =IF(A2="","",LARGE(B2:F2,COUNTIF(B2:F2,">="&A2))) ところでジャスト400がリストの中に含まれているときは,上も下も400が該当になってしまいますが,それで良いんですかね。
その他の回答 (4)
- KURUMITO
- ベストアンサー率42% (1835/4283)
回答No2です。400の数値が何個もB1セルからG1セルにあるようケースでは先の式では誤りとなります。 下の数値は次の式になります。 =IF($A2="","",SMALL($A2:$G2,RANK($A2,$A2:$G2,1)-1)) 上の値は次の式になります。 =IF($A2="","",LARGE($A2:$G2,RANK($A2,$A2:$G2)-1))
お礼
早速ご回答ありがとうございました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
例えばお示しのデータがA1セルからG1セルに入力されておるとして、J1セルに下の値、K1セルに上の値を表示させるとしたらJ1セルには次の式を入力します。 =IF($A1="","",SMALL($A1:$G1,RANK($A1,$A1:$G1)-1)) K1セルには次の式を入力します。 =IF($A1="","",SMALL($A1:$G1,RANK($A1,$A1:$G1)+1))
お礼
さっそくのご回答ありがとうございました。
- mitarashi
- ベストアンサー率59% (574/965)
配列数式でもよろしければ {=MIN(IF(B2:G2-A2>=0,B2:G2,1E+307))} {=MAX(IF(B2:G2-A2<0,B2:G2,-1)))} でいけると思います。 { }は分かり易いようにつけてあるだけで、実際にはCtrl+Shift+Enterで確定すれば勝手につきます。 念のために参考URLをつけておきます。
お礼
さっそくのご回答ありがとうございました。
お礼
問題が解決しました。 ありがとうございました。