• ベストアンサー

エクセル関数orVBA 2の近似値を返したい

A1:G1に小数点まである、数字が並んでいます。 2.18 1.85 2.33 2.23 1.88 2.11 1.93 そこでH1セルに2に最も近い数値を返す数式を作りたいです。 ネットで探した下の関数ですと、2以下のものを判別してもらえませんでした。 (上のデータですと、1.93を返してほしいのですが、2.11が返ってしまう。) H1: =SUMPRODUCT(MIN((A1:G1>2)*A1:G1+(A1:G1<=2)*1000000))) いい方法はありませんでしょうか。よろしくお願いいたします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.5

H1: =INDEX(A1:G1,MATCH(MIN(INDEX(ABS(A1:G1-2),)),INDEX(ABS(A1:G1-2),),0)) と記入してふつーにEnterで入力。

kenthehg
質問者

お礼

ありがとうございます。 もっともシンプルで使いやすく感じたため、ベストアンサーにさせていただきます。 助かりました!

その他の回答 (4)

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.4

提示の数式は2より大きい値で1番小さい数値を抽出しています。 次の数式で2に一番近い値を抽出できます。 =INDEX(A1:G1,1,MAX((((A1:G1)-MIN(ABS(2-A1:G1))=2)+((A1:G1)+MIN(ABS(2-A1:G1))=2))*COLUMN(A1:G1))) この数式は計算途中で配列数の受け渡しをしていますので数式バーへ入力してCtrl+Shift+Enterの打鍵で確定してください。

kenthehg
質問者

お礼

ご回答ありがとうざいました。

  • f272
  • ベストアンサー率46% (8469/18132)
回答No.3

私なら素直に =INDEX(A1:G1,,MATCH(MIN(ABS(A1:G1-2)),ABS(A1:G1-2),0)) と入れます。Ctrl+Shift+Enterで配列数式としてください。

kenthehg
質問者

お礼

ありがとうございました。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

こんなのでどうでしょう H1に↓の式を入れ、Ctrl+Shift+Enterで配列数式として確定 =IFERROR(HLOOKUP(MIN(ABS(A1:G1-2))+2,A1:G1,1,FALSE),2-MIN(ABS(A1:G1-2))) この式では、2に近い値がプラス方向とマイナス方向でそれぞれ有った時はプラス方向を優先します。 例:2.07と1.93があったら、2.07を返す。

kenthehg
質問者

お礼

ご回答ありがとうございました。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 H1セルに次の様な関数を入力されると良いと思います。 =IF(COUNT($A$1:$G$1),SMALL($A$1:$G$1,COUNTIF($A$1:$G$1,"<2")+(IFERROR(ABS(SMALL($A$1:$G$1,COUNTIF($A$1:$G$1,"<2"))-2),9E+307)>IFERROR(ABS(SMALL($A$1:$G$1,COUNTIF($A$1:$G$1,"<2")+1)-2),9E+307))),"") 或いは =IF(COUNT($A$1:$G$1),LARGE($A$1:$G$1,COUNTIF($A$1:$G$1,">2")+(IFERROR(ABS(LARGE($A$1:$G$1,COUNTIF($A$1:$G$1,">2"))-2),9E+307)>IFERROR(ABS(LARGE($A$1:$G$1,COUNTIF($A$1:$G$1,">2")+1)-2),9E+307))),"")

kenthehg
質問者

お礼

ご回答ありがとうございました。

関連するQ&A