• ベストアンサー

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))

関連するQ&A

  • ISERROR関数?

    こんにちは。 A列に100,200,300,400,500と数字がベタ打ちで表示されています。 B列には数式で表示させた数字、3100,3500,7800,9002,9900が表示されています。 いまC列に、B列の値が9000以上ならばA列の値を表示させようとしています。そうでなければ空欄にします。 (この例ならば、9002に対する400と9900に対する500が表示されることになります。) この場合の関数は=IF(ISERROR(B1>=9000),"",A1) では間違いなのでしょうか? 現状では、B列が3100であろうと9900であろうと、A列の値が表示されてしまいます。 よろしくお願いいたします。

  • ISERROR関数について

    ISERROR関数を使ってA1=a/2のエラー検索をします(ここではaは名前を定義していない)。 関数ウィザードから、直接#NAME?のエラーがでているセルA1を引数にすると ISERROR("A1") と""がついて結果がFALSEになってしまいます。 直接入力のときには問題なくTRUEで返されるのですが、なぜウィザードを使うと""が自然とつくのでしょうか? 教えてください。よろしくお願いいたします。

  • ISERROR関数を使用してもエラーが出る

    Excel2016でセルにUSDまたは、JPYの文字がある場合はエラーが出ないのですが、それ以外の文字の場合ISERROR関数を使用しても#VALUE!というエラーが出ます。 関数は以下の通りです。 =IF(OR(NOT(ISNUMBER($G5)),NOT(ISNUMBER($K5))),"",IF($B$5<ROUNDDOWN($I5*IF(NOT(ISERROR(SEARCH("JPY",$D5,1))),100,VLOOKUP(CONCATENATE(MID($D5,IF(OR(SEARCH("USD",$D5,1)=4,ISERROR(SEARCH("USD",$D5,1))),1,4),3),"JPY"),$A$12:$B$18,2,FALSE))*$G5*$B$8/IF($B$8=100000,10000,IF($B$8=10000,1000,IF($B$8=1000,100,))),0),"超過",ROUNDDOWN(IF(ISNUMBER($P5),-$P5,-$I5)*IF(NOT(ISERROR(SEARCH("JPY",$D5,1))),100,VLOOKUP(CONCATENATE(MID($D5,IF(OR(SEARCH("USD",$D5,1)=4,ISERROR(SEARCH("USD",$D5,1))),1,4),3),"JPY"),$A$12:$B$18,2,FALSE))*$G5*$B$8/IF($B$8=100000,10000,IF($B$8=10000,1000,IF($B$8=1000,100,))),0))) エラーが出ているのは以下の「【】」の部分のようです。 =IF(OR(NOT(ISNUMBER($G5)),NOT(ISNUMBER($K5))),"",IF($B$5<ROUNDDOWN($I5*IF(【NOT(ISERROR(SEARCH("JPY",$D5,1)))】~ 数値を表示したいのですが解決方法を教えてください。 回答よろしくお願いします。

  • エクセルVlookup~&””の結果が数値にならず

    =IF(ISERROR(VLOOKUP(検索値,sheet1!$A$2:$C $100,1,FALSE)),"",VLOOKUP(検索値,sheet1!$A$2:$C $100,1,FALSE)&"") このような式です。 返された数字はなぜか左寄せになっています。 書式設定を見ると通貨になっており、カンマ入り数値にしても 右寄せになるだけでカンマが入りません。 どうしたらカンマ入り数値になるでしょうか。

  • VLOOKUP関数 エクセル関数教えてください

    =IF(ISERROR(VLOOKUP(B2,$E$1:$F$296,2,FALSE)),"",VLOOKUP(B2,$E$1:$F$296,2,FALSE)) という関数を入れて、品番をセルに入力して元表から品名を導く表を作成しました。うまく使えています。 これを元に =IF(ISERROR(VLOOKUP(B2,$F$1:$I$1000,2,FALSE)),"",VLOOKUP(B2,$F$1:$I$1000,2,FALSE)) という関数に直して、同じような表を作ろうとしたのですが、うまくいきません。 何が悪いのか分かりません。 どうすればうまくいきますでしょうか?

  • Excelで、IF関数を使用して空欄にしたところの数値を使用したいのですが

    Excel初心者です かなり特別なケースだと思うのですが IF関数を使って、{上と同じ数値なら空欄、そうでない場合は計算結果を表示} というのを、 E9 =IF(SUM(E8,C9)-D9=E8,"",SUM(E8,C9)-D9) という関数を使って作ってみました。 仮に、下のような数値の並びの場合 1 22 333 333 4444 4444 4444 55555 という場合 1 22 333 4444 55555 というように表示したいのですが この関数を見ていただくとわかるとおり 一つ上の数値を参照して計算するため 空欄であれば、そのセルの数値を”0”として認識してしまい 下の計算結果がハチャメチャなものになってしまいます。 空欄を表示しても、数値は参照したい というような場合、どのようにしたらいいのでしょうか もしくは、上の関数を使用した場合 E8が空欄の場合はE7の数値、E7も空欄の場合E6を参照する、というやり方はあるのでしょうか。 自分でも調べてみたのですが、同じようなケースの質問がなかったため質問させていただきました。 どうぞよろしくお願いいたします。

  • エクセルの関数とグラフについて

    VLOOKUPを使って入力したIDNoに対して、別々のシートから検索するため次のような関数をいれています。=IF(ISERROR(VLOOKUP($E1,'シート名(1)’!$B$5:$IV$254,COLUMN(G6),0)),"",VLOOKUP($E1,'シート名(1)'!$B$5:$IV$254,COLUMN(G6),0))&IF(ISERROR(VLOOKUP($E1,'シート名(2)'!$B$5:$IV$254,COLUMN(G6),0)),"",VLOOKUP($E1,'シート名(2)'!$B$5:$IV$254,COLUMN(G6),0)) この関数から得られた数値を折れ線グラフに反映させたいのですが、グラフに数値として認識されません。セルの書式設定は数値にしています。 ネットで色々調べてみて、この関数の最後に)/1を追加させた式を入力すると数値は認識されるようになりました。しかし空白の場合に#VALUEになり”プロットしない”に設定しても0にグラフが出てしまいます。 また同じ表で日付に対しても日付で表示されなかったので=IF(ISERROR(VLOOKUP(E$1,'シート名(1)'!$B$5:$IV$254,COLUMN(AC6),0)),"",TEXT(VLOOKUP(E$1,'シート名(1)'!$B$5:$IV$254,COLUMN(AC6),0),"ge.m.d"))&IF(ISERROR(VLOOKUP(E$1,'シート名(2)'!$B$5:$IV$254,COLUMN(AC6),0)),"",TEXT(VLOOKUP(E$1,'シート名(2)'!$B$5:$IV$254,COLUMN(AC6),0),"ge.m.d"))の関数を入力したところ日付が表示されるようになったのですが、空白の場合は”M33.1.0”となりグラフ上でも表示されてしまいます。 どうすれば日付や数値としてグラフ上に反映させられるのか教えてください。また空欄の場合には0にポイントされないM33.1.0にならない方法も教えてください。 エクセルは2003です。 エクセル初心者のため説明不足等あるとは思いますがよろしくお願いします。

  • EXCEL 2003にて予定表を作成しています。

    EXCEL 2003にて予定表を作成しています。 祝日を、VLOOKUP関数にて表示しました。 =VLOOKUP(A5,$F$5:$G$20,2,FALSE) エラー( #N/A )を非表示にするための関数を 入力するも、上手くいきません。図添付 =IF(ISERROR(VLOOKUP(A5,$F$5:$G$20,2,FALSE),"",VLOOKUP(A5,$F$5:$G$20,2,FALSE)) 「入力した数式は正しくありません」と表示されます。 正しい数式を教えてください。よろしくお願いします。

  • excelのvlookup関数で勝手に引用符がつく

    excelのvlookup関数を使ってあるシートを作っています。 「basedata」というシートに3列表をつくり、1番左にキー、2番目と3番目に値をいれ、この表を別シートから検索にいっています。 検索元のシートには 文字列 文字列からMID関数で切り出した数値 検索1 検索2 の4列があります。 やりたいことは2列目の切り出した数値を元にして、basedataのキーを検索しにいき、検索1の列にbasedataの2列目の値を、検索2に3列目の値をいれたいと思っています。 =IF(ISERROR(VLOOKUP(B2,basedata!A2:E56324,2,0))=TRUE,"",VLOOKUP(B2,basedata!A2:E56324,2,0)) という式を検索1のセルに入力した場合、何も表示されず、B2に実際に入っている値を引用符なしで直うちすると値が表示されます。ステップインで分析すると、参照にした場合、参照値が引用符で囲われており、これが原因かと思うのですが、何か回避方法はないでしょうか。

  • エクセル 関数 ISERROR VLOOKUP

    エクセル関数でご教授お願いします。 今「LIST」シートのA列に品番、B列に単価が入力されています。 これを「入力」シートのA列1行目に品番を入力して、B列1行目に単価を引っぱってくる関数を作りました。 以下関数です。(「入力」シートのB列の関数です) =IF(ISERROR(VLOOKUP(A1,LIST!$A$1:$B$3,2,FALSE)),"品番ミス",VLOOKUP(A1,LIST!$A$1:$B$3,2,FALSE)) 品番が間違っている場合は”品番ミス”と入力されます。 この状態で問題なのは、入力シートのA列に何も入力されていない時に、B列に品番ミスと入ってしまう事です。 何とか、空白にしたいのですがいい方法はありませんでしょうか?

専門家に質問してみよう