• ベストアンサー

Excelで一番ゼロに近い値を求めるには

Excelで一番ゼロに近い値(正負)を求めるにはどうしたらよいでしょうか? 希望は、条件書式で設定したいのです。 もし駄目なら列を挿入して計算式用の列を作っての方法をご教授ください。 例えば、 A1  0 A5  0.5 A6  -0.3 A7  0.1 A8    (空白) A9  -0.12 セルA5からA9の間で一番ゼロに近い値を求めたいです。 その時にセルA8の空白は考えないようにしたいです。 条件書式か計算式でできるでしょうか? どうぞよろしくお願いいたします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.6

配列数式にせざるをえないのかな =MIN(IF((A2:A10<>"")*(A2:A10<>0),ABS(A2:A10),99999)) 99999は、A2:A10で5桁の数字以下しかない場合の式。 例データ 0 5 0.3 0.11 1 21 -1   で 結果 0.11 === それとか、ユーザー関数を定義するとか。5桁以内の数で空白と0は対象外。 標準モジュールに Function sabs(a) x = 99999 For Each cl In a If cl <> "" And cl <> 0 Then If Abs(cl) < x Then x = Abs(cl) End If Next sabs = x End Function ーー シートで=Sabs(A1:A10)と入れる 結果 0.11

その他の回答 (5)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.5

条件付き書式で一概にとはできませんが作業列を使うことでもなく、一つのセルに次の式を入力して、式を確定する段階でCtrl+Shift+Enterキーで確定すればよいでしょう。 =IF(COUNTIF(A5:A9,SMALL(ABS(A5:A9),COUNTIF(A5:A9,0)+COUNTIF(A5:A9,"")+1)),SMALL(ABS(A5:A9),COUNTIF(A5:A9,0)+COUNTIF(A5:A9,"")+1),-SMALL(ABS(A5:A9),COUNTIF(A5:A9,0)+COUNTIF(A5:A9,"")+1)) 上の式ではこれまでの回答には無い一番ゼロに近い値が負の数値の場合でも対応できるようになっています。 ところで上の式をC1セルに入力してお望みの数値を表示させている場合に条件付き書式でお望みの数値のセルを色で塗りつぶすとしたらA5セルからA9セルまでを範囲として選択したのちに「条件付き書式」で数式の窓には次の式を入力し、「書式」で「塗りつぶし」のタブから色を選択すればよいでしょう。 =A5=C$1

回答No.4

範囲がそれほど広くないことを条件に A5:A9セル範囲をA5セルから選択し、条件付き書式 数式が=MIN(IF($A$5:$A$9<>"",ABS($A$5:$A$9)))=ABS(A5) 範囲が広い場合は どこかのセル(例A1セル)に =MIN(IF($A$5:$A$999<>"",ABS($A$5:$A$999))) [Ctrl]+[Shift] +[Enter] で確定、配列数式です({}で囲まれる) A5:A999セル範囲をA5セルから選択し、条件付き書式 数式が=$A$1=ABS(A5)

noname#204879
noname#204879
回答No.3

{=MIN(IF(A5:A9="","",ABS(A5:A9)))} ← 配列数式

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 一例です。 B列を作業用の列として使用します。 データはA列の5行目~9行目にあるとして・・・ B5セルに =IF(A5="","",ABS(0-A5)) という数式を入れオートフィルでA9までコピー! 表示したいセルに =INDEX(A5:A9,MATCH(MIN(B5:B9),B5:B9,0)) (エラー処理はしていません) としてみてはどうでしょうか? 尚、「0」に一番近い値が複数ある場合は一番上の行のデータが表示されます。 参考になれば良いのですが・・・m(_ _)m

回答No.1

最初に 正負それぞれに分けます 正の数の最小値をもとめます 負の数の最大値を求めます 正+負 = 答えが正なら負が0に近いと判定できます。 0の判定はどうなるんだろ、と疑問があるのでそこはがんばってください。 MAX MIN IF でできます。

関連するQ&A