• 締切済み

エクセルの""と、0の仕分けについて

エクセルの関数を使うときに、=0の場合。という式にすると、""でも0でも同じ認識になっています。(=""の場合も同じ) このように、ほぼ同意義と思われる""と0の仕分けを関数で行うことができるのでしょうか? 自分が今使っている様式はA1に名前があり、B1に数字が来ており、そのB1に数字が入力されているかいないか?を判別したい。また、その前提として、抽出したいところがA列から検索してから、数字が入力されているか。を判別するようにしていきたいです。(0と入力していても、それを空白、なしという判断ではなく、0という判断にしたい。) 説明がとても分かりにくくて申し訳ないのですが、ご回答していただけたら嬉しいです。 よろしくお願いいたします。

みんなの回答

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

>エクセルの関数を使うときに、=0の場合。という式にすると、""でも0でも同じ認識になっています。(=""の場合も同じ) 同じじゃないですよ。 対象セル=0と対象セル=""の論理値が同じなのは対象セルがブランク(未入力)の場合だけです。 対象セルに数式で ="" と入力すると文字数0の文字列が代入されますので ""=0 はFALSEが返ります。 >このように、ほぼ同意義と思われる""と0の仕分けを関数で行うことができるのでしょうか? 数値の0とブランクの違いを明確に区別するにはISBLANK関数やISNUMBER関数で判定すれば良いでしょう。 >A列から検索してから、数字が入力されているか。を判別するようにしていきたいです。(0と入力していても、それを空白、なしという判断ではなく、0という判断にしたい。) A列が一致する行のB列の値がブランクであるか数値でありかを判定するには幾つかの関数を組み合わせて判断することになります。 例1(E列) =IF(ISBLANK(OFFSET($A$1,MATCH(D1,$A$1:$A$5,0)-1,1)),"",OFFSET($A$1,MATCH(D1,$A$1:$A$5,0)-1,1)) 例2(F列) =IF(ISBLANK(INDEX($A$1:$B$5,MATCH(D1,$A$1:$A$5,0),2)),"",INDEX($A$1:$B$5,MATCH(D1,$A$1:$A$5,0),2)) 例3(G列) =IF(ISNUMBER(VLOOKUP(D1,$A$1:$B$5,2,FALSE)),VLOOKUP(D1,$A$1:$B$5,2,FALSE),"") 貼付画像はExcel 2013で検証した結果です。 B5セルには ="" と言う数式を入力しています。

ATAMAbakanako
質問者

お礼

画像添付までしていただき、とても分かりやすい説明ありがとうございます! やはり、ISの二つの関数をうまく使わなくていけないのですね。 しかし、0=””の認識がFALSEと出るのは衝撃でした! とても参考になりました!さっそく試してみます! ありがとうございます。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.5

空白かどうかだけなら =IF(B1<>"","空白ではない","空白") A列から検索してというのが   A  B 1 田中 1 2 鈴木 3 佐藤 2 こんな表でA列で探したい名前をC1に入れて結果を出したいという場合 (名前の重複がないという条件で) 2007以降だと =IFERROR(IF(VLOOKUP($C$1,A:B,2,FALSE)<>"","空白ではない","空白"),"") 2007以前だと =IF(ISERROR(VLOOKUP($C$1,A:B,2,FALSE)),"",IF(VLOOKUP($C$1,A:B,2,FALSE)<>"","空白ではない","空白")) でいかがですか。

ATAMAbakanako
質問者

お礼

申し訳ありません(汗) 自分の説明ミスで、A列は名前が重複しており、その名前の重複分もB列で計算しなければいけないのです。でも、これに今使っている式を足せばいけそうなので、少し改良させていただいて、試してみます! ありがとうございます!

  • intin
  • ベストアンサー率33% (8/24)
回答No.4

エクセルの関数の癖で、(一見)直感に反する判定結果になる場合があります。 0と空白を識別したいのであれば、 =if(B1=”” , … , … ) というのが一番シンプルだと思います。 >抽出したいところがA列から検索してから、 vlookup関数を使って抽出している、という意味でしょうかね?それであれば、 =if(vlookup( ... )=”” , … , … ) という形で行けると思います。

参考URL:
http://www.excelspeedup.com/0blank/
ATAMAbakanako
質問者

お礼

こんな簡単な式でいけるのが衝撃的でした!! 試してみます!ありがとうございます。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.3

>そのB1に数字が入力されているかいないか?を判別したい。 数字の判定なら =ISNUMBER(B1) だけど、VLOOKUPの結果のことなら =IF(ISNUMBER(VLOOKUP(X1,A:B,2,FALSE)),VLOOKUP(X1,A:B,2,FALSE),VLOOKUP(X1,A:B,2,FALSE)&"") のようにすれば、0は0,""は""で表示されます。

ATAMAbakanako
質問者

お礼

VLOOKUPでもできるんですね!勉強になりました! ありがとうございます。ISNUMBERが使えなかったときに試してみます!

  • trytobe
  • ベストアンサー率36% (3457/9591)
回答No.2

=IF(ISBLANK(B1),"",0) か、 =IF(ISNUMBER(B1),B1,"") か、ですか。 ISBLANK関数 空白なら空白|未入力の場合に何も表示しない~Excel関数技 http://kokodane.com/2013_kan_034.htm ISNUMBER関数の使い方 情報関数 http://kokodane.com/kansu_info_12.htm

ATAMAbakanako
質問者

お礼

URLまで載せていただいてありがとうございます! ゼロの認識の関数まであるんですね! さっそく試してみます!ありがとうございます。

  • fmxBeem
  • ベストアンサー率54% (325/599)
回答No.1

>0と入力していても、それを空白、なしという判断ではなく、0という判断にしたい。 ISBLANK関数とIF関数の組み合わせでどうでしょうか。 =IF(ISBLANK(B1),0,B1) B1がブランク(””)の時は0を返し、それ以外の数値の時はB1の値を返します。

ATAMAbakanako
質問者

お礼

なるほど!””を認識する関数があるのを知りませんでした! ありがとうございます。さっそく試してみます!

関連するQ&A