• ベストアンサー

Excelで、iserror関数を使用した結果は数値ではないのですか?

ご質問させていただきます =IF(ISERROR(VLOOKUP(A2,$A$29:$F$40,3,FALSE)),"0",VLOOKUP(A2,$A$29:$F$40,3,FALSE)) という関数を作りました。 この際、エラーが表示される場合に、0に置き換える、という意味で この関数を作ったのですが 表示された 0 は ・表示がセル内で左詰になっている ・条件式書式で「セルの値が 0 のときに フォント色を白」  という条件をつけても、フォント自体は白にならない という2点から、0は数値ではなく文字として認識されている、と自分なりに捉えました。 しかし、疑問に思ったのは、 ・表示された 0 を引用した数式は成り立つ (たとえば、A1の値をIserrorで表示したときに0が出て、A2が2の場合  B1の数式を、 =A1+A2  とすると、2が表示される) ということから、数式を作ると数値として認識される、ということです。 この関数でセルに表示された "0" は、文字として認識されるのでしょうか? それとも数値として認識されるのでしょうか? ちなみに、自分は、0を表示させずに {条件式書式を使用したいと考えています。} さらにそのセルの値をさらに別の数式に反映させたいです。 なので、一番上に表示した数式の "0" の部分を "" にしてしまいたくないのです。(空欄表示の場合は、完全に次の数式に反映できず、このセルの値 {この場合は空欄} を引用した数式の値は #VALUE と表示されました) どなたか詳しい方、ご回答よろしくお願いいたします。

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

  • ベストアンサー
  • Aiz-Kis
  • ベストアンサー率80% (4/5)
回答No.3

No1の方もおっしゃってますが、0を「"」でくくっているので文字列となっていますね。 >0を表示させずに{条件式書式を使用したいと考えています。} >さらにそのセルの値をさらに別の数式に反映させたいです。 文字列でない「0」の非表示は、ツール→オプション→表示→ウィンドウオプション→ゼロ値(Z) こちらのチェックボタンを外すことで非表示にすることができます。 また、画面上は非表示になりますが、 カーソルを合わせるとツールバーに0が表示されますし、 その「0」を用いて計算も書式設定も行うことができます。 Excel2003ですが、以下の実験で確認済みです。   A  B  C  D  E  F 1 ○     0  2 ×     B C列にはA列が○ならば数字の「0」を直接入力し、○でなければBを直接入力します。 D1のセルには上記のものを以下の式で入力します。 (注!! 0は「"」でくくらず、数字として「0」をそのまま入力します) =IF(A1="○",0,"B") E列に =IF(C1=0,"A","B") F列に =IF(D1=0,"A","B") オプションで「0」を表示設定し、条件書式で0に塗りつぶしの色を設定。 結果はE列もF列も同じ結果になりました。 ちなみに、数値文字列のことについて詳しいHPがありましたので、ご参考までに。 EXCEL生産性向上委員会 http://www.excel7.com/trouble15.htm

その他の回答 (3)

  • takesun
  • ベストアンサー率40% (22/54)
回答No.4

既に回答がありますとおり、 数式中の"0"の部分を0(""なし)に変更でよいと思います。 "0"のまま条件付き書式を設定するなら、 数式が =CODE(A1)=48 としてやると、設定は可能です。

  • Sinogi
  • ベストアンサー率27% (72/260)
回答No.2

>しかし、疑問に思ったのは、 >・表示された 0 を引用した数式は成り立つ >(たとえば、A1の値をIserrorで表示したときに0が出て、A2が2の場合 > B1の数式を、 =A1+A2  とすると、2が表示される) >ということから、数式を作ると数値として認識される、ということです エクセルは親切というかおせっかいというか・・・ 数字に見える文字列を参照した式があると数値として処理してくれます。 なので、文字列で表示した0も +2 の計算式で 2 が得られてしまいます。

  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

>=IF(ISERROR(VLOOKUP(A2,$A$29:$F$40,3,FALSE)),"0",VLOOKUP(A2,$A$29:$F$40,3,FALSE)) "0" ""で囲んでいるから文字列の0が表示されるのは当然です。 数値として認識させたいなら、その部分を””を外し、単に0として下さい。 =IF(ISERROR(VLOOKUP(A2,$A$29:$F$40,3,FALSE)),0,VLOOKUP(A2,$A$29:$F$40,3,FALSE))