• ベストアンサー

空白にする関数

教えてください。G20のせるが空白の場合はH20のセルも空白にしたいのですが、H20のセルに=IF(G20=0,"",(G20-MOD(G20,1000)))の関数をいれましたが#VALUEと出でしまいます。よろしくお願いします。

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

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8465/19279)
回答No.1

>G20のせるが空白の場合はH20のセルも空白にしたい >H20のセルに=IF(G20=0,"",(G20-MOD(G20,1000))) G20が「本当に空白セル」であれば、この式でも問題ありません。 しかし、G20が「見た目だけ空白で、長さ0の文字列」だった場合は、この式では上手く行きません。 G20が「数値以外」の時は「IF(G20=0,~~~」と言う式そのものがエラーになります。 何故なら「数値以外の物は0と比較できない」からです。比較した段階で、比較の結果に関わらず「#VALUE」になります。 「G20-MOD(G20,1000)」と言う部分は「G20が数値である事が前提」ですから、IFの判定は「G20が数値であるか否か」で行なうべきです。 以下のようにして下さい。 =IF(NOT(ISNUMBER(G20)),"",G20-MOD(G20,1000)) または =IF(ISNUMBER(G20),G20-MOD(G20,1000),"") この式は、前述の通り「G20が数値かどうか」を判定した上で、数値の場合だけ計算しています。 >G20のせるが空白の場合 実は「空白セルには2種類ある」のです。 1つは「本当に何も入ってない空白セル」です。このセルは「IF(G20=0,~」のように「0との比較が可能」で、0と比較した結果は「0と等しい」と判断されます。 もう1つは「長さが0の文字列が入っている、見た目だけ空白で、本当は空白じゃないセル」です。このセルは「IF(G20=0,~」のように比較すると「文字列と数値は比較できない」ので「#VALUE」になります。 簡単に「空白セル」と言っても「色々ある」ので、注意しましょう。

HARA007
質問者

お礼

早速の回答ありがとうございました。空白するにもいろんなケースがあるという事、勉強になりました。G20のセルには書式設定でユーザー定義#,###!,0が設定していますが、これも関係するのですか。教えていただいた関数でエラーは直りました。ありがとうございました。

その他の回答 (5)

  • skp026
  • ベストアンサー率45% (1011/2237)
回答No.6

とりあえず、こんな感じで試してみてください。 =IF(ISNUMBER(G20),IF(G20=0,"数値がゼロ",(G20-MOD(G20,1000))),"数値以外") これは数値以外の場合と、数値がゼロの場合、 計算しないものですが、 わかりやすいよう、わざと文字列を入れました。 不要になりましたら削除ください。 そもそもの原因は、G20が見た目空白でも スペースが入っているのかもしれないです。

HARA007
質問者

お礼

早速、試してみました。ありがとうございました。

  • chie65535
  • ベストアンサー率43% (8465/19279)
回答No.5

訂正と追記。 訂正です。 「文字列と数値の0は比較できない」と書きましたが、間違いでした。比較は可能です。 「IF(G20=0,~」のように「長さ0の文字列」と「数値の0」を比較すると「0じゃない」と判断されます。 結果「G20-MOD(G20,1000)」の部分を計算しようとして「#VALUE」になります。 以下、蛇足。 「本当に何も入ってない空白セル」と「長さ0の文字列が入っていて見た目だけ空白のセル」は「ISBLANK()関数」で見分けます。 ●G20が本当の空白セルの時 ・「ISBLANK(G20)」の結果⇒「TURE」 ・「G20=0」の比較の結果⇒「TRUE」 ・「G20=""」の比較の結果⇒「TRUE」 ●G20が長さ0の文字列が入ったセルの時 ・「ISBLANK(G20)」の結果⇒「FALSE」 ・「G20=0」の比較の結果⇒「FALSE」 ・「G20=""」の比較の結果⇒「TRUE」 たいていの場合「とにかく空白セルなら」という判定しかしないので「IF(G20="",~」としておけば、問題ありません。「本当の空白セル」も「見た目だけ空白セル」も「IF(G20="",~」の比較で「TRUE(真)」になります。 ですが、まれに「何も入力されていない場合だけ」という判定が必要になります。その場合は「ISBLANK()関数」で「本当の空白セル」なのかどうか判定します。

HARA007
質問者

お礼

たかが空白するにもいろと勉強になりました。感謝です。

  • mayoke
  • ベストアンサー率25% (16/62)
回答No.4

こんな感じでいいですか? =IF(LENB(G20)=0,"処理無し",IF(ISNUMBER(G20),"数値だった場合の処理","数値以外の場合の処理")) LENB:セル内のバイト数 ISNUMBER:数値かどうかのチェック

HARA007
質問者

お礼

早々にありがとうございました。試してみます。

  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.3

=IF(G21<>"",(G21-MOD(G21,1000)),"") では、ダメなのでしょうか?

HARA007
質問者

お礼

早速、この関数を入力しましたところ、空白になりました。ありがとうございました。

  • black2005
  • ベストアンサー率32% (1968/6046)
回答No.2

ダブルクォーテーション""内に文字が定義されていないからでしょ? 空白を入れる必要がありますね。 IF(G20=0," ",(G20-MOD(G20,1000)))

HARA007
質問者

お礼

早速の回答ありがとうございました。ためした結果、空白となりました。

関連するQ&A

  • 関数によって空白したのを数値「0」に置き換える

    A.............B...............C 1 ZZ............6..............× 2 AA........... 1 3 BB 4 CC............3 B列にはそれぞれ関数が入っています。 セルB1には、B2、B3、B4の数値の合計です。 C1のセルには、C1数値とB2、B3、B4の数値の合計が一致しているか否かの判定する関数が 入っており、一致していなければ、"×"が表示させるようにしています。 しかし、ここで問題が起きました。 「VALUE」というエラーが表示されました。 上記の表では、セルB3は、空白になっております。 本来は、セルが空白になっている場合は、「0」が格納されていると思うのですが、 ここには、関数によって、文字列?の「空白」に置き換えられています。 例えば = IF((Z5) ,5, "") ようにです。 多分、関数によって文字列として認識される空白("")を置いたためと思います。 関数によって置き換えた空白("")を数値「0」として認識できる関数を教えてください。 いろいろな方法があると思いますが、「関数」のみで教えてください。 C1には、以下の関数が入っています。 =IF((B1) = (B2+B3+B4) ,"○","×")

  • IF関数の空白セルの扱いについて

    関数にあまり詳しくないので、教えてください。 セルA1からH1に入力された数値の「最大値が8以上」または 「最小値が3以下」の場合は○、それ以外は空白としたいのですが、 「=IF(OR(7<MAX(A1:H1),4>MIN(A1:H1)),"○","")」だと、 範囲内のすべてのセルが空白の場合は最小値を0とみているのか「○」となってしまいます。 空白セル=0としないようにするには、どうしたらよいでしょうか?

  • 「#REF!」を空白表示する関数

    G371に「#REF!」がある場合かゼロがある場合に任意のセルに空白を表示するような関数を作りたいのですが、どうしたらよいでしょう? ちなみにこの場合の「#REF!」はエラーの表示(左脇に出る「!」というマーク)はありません。 何もないセルに自分で「#REF!」と打ち込んだものです。 以下の3つの関数を試しましたが「#REF!」がそのまま表示されるだけでした。 =IF(OR(G371=0,ISERROR(G371)),"",G371) =IF(OR(G371=0,ISTEXT(G371)),"",G371) =IF(OR(G371=0,G371="#REF!"),"",G371)

  • VLookup 関数が空白を0として引いてきてしまう

    Vlookup 関数が、空白のセルなのに 0 と認識して持ってきてしまいます。どうすれば空白として表示できますか? =vlookup(H88,Levels,2,false) H88 のセルは空白なのに、0 として表示される。

  • 0のときは空白、空白のときも空白を返す式について

    あるセルの値が0のときは空白に空白の時はそのまま空白を返す関数はどのようにすればいいでしょうか? たとえばIF計算式で0名の場合の答えは0ですがそれを空白にしたいと思います。 さらに空白のときも空白にしたいので=IF("","",C4/D6)という関数は使えないと思いますが、 どのような式にすればよいでしょうか。 宜しくいお願い致します。

  • IF関数での計算結果を貼り付けたとき、完全な空白セルにしたい

    EXCELのIF関数で例えばA1セルが3のときAを表示して違うときは空白にしたい場合は =IF(A1=3,"A","") と書くと思いますが、IF関数が書かれているセル(計算結果)をコピーして他の範囲に値だけを貼り付けた場合、Aまたは空白セルに見かけ上はなってはいるのですが、その空白セルにはよく見ると '(カンマ)が入っており、完全な空白セルにはなっていないようです。後で貼り付けられた範囲を編集していきたいのですが完全な空白セルでないため作業が続かなくなっています。どなたか詳しい方がおられましたらよろしくお願いします。

  • Excel関数で 空白値の入力はどう書くの?

    あるセル(B1とします)に =if(A1="a",0,"") とif関数を書きました。 別のセルA2にセルB1を合計するような式( =B1+C1 )と書くと#VALUE! というエラーになります。 多分、B1の値 "" が空白ではなく文字列と認識されているからだと思いますが、""の代わりに空白値をif分の中に指定することはできないのでしょうか? 逃げ手として、A2に書く式を =sum(B1:B1)+sum(C1:C1)とする手はありかと思いますが、できたら空白値を代入したいです。

  • エクセル 関数で空白を入れたセルと空白セルは違う?

    エクセル2010を使っている者です。 「データ」というシートのAL5というセルに IF(ISERROR(INDEX(AL1:AL500,$A$5)),"",INDEX(AL1:AL500,$A$5)) と関数を入れており、その結果、空白が戻り値となり、見た目上、AL5は空白となっています。 しかし、別のシートのあるセル(A1とします)に =IF('データ'!AL5="","",DATE(YEAR('データ '!AL5)-1,MONTH('データ '!AL5),DAY('データ '!AL5))) と関数を入力すると、AL5は空白として扱われていないようで、そのセル(A1)は空白にならずに「H1810.12.31」と表示されてしまいます。 AL5に空白が返されているのなら、それを空白として扱ってもらうようにするにはどうすれば良いですか?

  • エクセル 空白を消す関数 IF?

    エクセル2002を使っています。 A1のセルに「あい うえお」 A2のセルに「かきく けこ」 A3のセルに「さ しすせそ」…と200行入力してあります。 空白(スペース)を消したいのですが、スペースが入っている位置はまちまちなので、リプレイス関数は使えません。 何とか関数を使って、空白を消す事は出来るのでしょうか? 私が思いついたのはIF関数で、『もしA1のセルに空白があったら空白を消す』と命令できるかも・・・と思ったのですが、式がどのようになるのか分からないし、もっと簡単な、もしくは別の関数があったらぜひ知りたいです。

  • 収入または支出合計が空白(関数)になっていても差引合計が現れるよう様にする方法

    いつもお世話になっています。 エクセル2003で下記の様な 表を作っています。H・収入合計のセルに=IF((C3)=0,"",IF((D3)=0,"",(C3*D3)))という式が入っています。 同様にH・支出合計のセルには、 =IF((F5)=0,"",IF((G5)=0,"",(F5*G5)))と数式が入っています。 差引合計には=IF(COUNT(E3,H3)=0,"",(I2+E3-H3))という式を入たのですが、これだと収入・支出合計が空白と充たされてしまうのか#VALUE!という表示が出てきます。 もし収入・支出合計が空白でも、合計が現れる計算方法がありますか?。教えてください ロータスだとPURECOUNT関数を入力したら、計算されたと思うのですが?・・、エクセルでは不可能なのでしょうか?。 C     D       E       F    G      H      I 収入  収入数  収入合計   支出  支出数  支出合計  差引合計 1000   2       2000                          2000                        100     1    100     エラー                         1000    1   1000     エラー

専門家に質問してみよう