• ベストアンサー

空白にする関数

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

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

  • ベストアンサー
回答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% (1010/2238)
回答No.6

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

HARA007
質問者

お礼

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

回答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