• ベストアンサー

エクセル 間違いを教えてください。

間違いを教えてください。 D列に最終の計算結果を得るようにしました。 B8に「 =IF(A8="","",(B7+A8)) 」を入れています。 D8に「 =SUM(B8-(10000-C8)*300) 」を入れています。 このようにすると、D列には#VALUE!と表示されますが、AとCに数値を入れると、Dには正しい計算結果が表示されます。 #VALUE!となる原因を教えて下さい。 エクセルについては全くの初心者なので、質問の仕方そのものが間違っているかもしれませんが、よろしくお願いします。

  • snug
  • お礼率83% (114/136)

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

  • ベストアンサー
noname#190877
noname#190877
回答No.3

私の場合は、A8もしくはD8のどちらか、式の成立に欠かせないセルを指定して、=IF(A8="","",SUM~ にします。 未入力画面上に文字が出なければ、良いんですよね?

snug
質問者

お礼

未入力画面上に文字や数値が出ないようにしたいという私の目的に合ったご回答でした。 有難うございました。

その他の回答 (3)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

SUM関数を使っているということはB8セルが文字列であっても計算できるようにとのことでしょうか。それでしたら =SUM(B8)-(10000-C8)*300 とするのがよいでしょう。 ところでセルが空白の場合には通常は0とみなされて計算が行われ#VALUE!などのエラーが表示されませんが、ご質問の場合のようにB8セルには =IF(A8="","",(B7+A8)) の式が入力されておりA8セルにデータが無ければB8セルは空白となって通常でしたら0と判断され計算が行われるわけですがエラーとなったわけです。 例えばB8セルに =A8 と入力してA8セルを空白にした場合でもD8セルではエラーとなってしまいますね。 式が入力されていて空白の表示になっている場合には空白のセルは文字列として評価されており、式が入力されていないで空白のセルは空白のセルとして評価されているのです。 例えば全く別のセルに =CELL("type",B8) と入力してみてください。この関数はセルのデータのタイプを調べる関数です。A8セルに数値が入力されている場合には v の表示となって数値セルとして判断されていますがA8セルが空の時は | となって文字列セルとして判断されています。 B8セルの式を削除して空のセルとした場合には b と表示され空白セルとして判断されています。 セルが空白でも式が入力されていれば文字列として、単なる空白では空白セルとして判断されているのです。 B8-(10000-C8)*300の式ではB8セルが文字列ですので計算はエラーとなりますね。エラーを解消するのでしたらD8セルの式は =IF(B8="","",B8-(10000-C8)*300)  とするかあるいは =SUM(B8)-(10000-C8)*300 とすることでしょう。

snug
質問者

お礼

エラーを解消しセルを空欄にするには、教えていただいた「 =IF(B8="","", 」がぴったりでした。 その他エクセルの勉強になることを教えていただき有難うございました。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

=SUM(B8-(10000-C8)*300) ふつうは、こういう式は使わないが、この式を計算するためには、 B8、C8に有効なデータ、この場合は数値が入っていなければ計算できません。B8が、 =IF(A8="","",(B7+A8)) となっていて、A8が""の場合は、B8を""にしろということだから、これは数値でないから計算できない。それで、 #VALUEと表示されます。要するに計算できないといっているのです。 計算できる数値を入れれば計算する。 ところで、=SUM(B8-(10000-C8)*300)この式は意味がないと思うが、 =B8-(10000-C8)*300 ではダメなのか。

snug
質問者

お礼

#VALUEと表示される理由が分かりスッキリしました。 有難うございました。

  • TammyG3
  • ベストアンサー率30% (34/111)
回答No.1

エラーを回避するために、SUM関数を使っているとしたら、 貴方は、初心者ではありません!! SUM関数は、セル範囲では文字列を無視しますので、 D8は、 = SUM( B8 ) - (10000- C8 )* 300 としてください。                               鎌倉 曽野蜩

snug
質問者

お礼

ご回答、有難うございました。 #VALUE!が出なくなりました。 ただAとCに数値がない時は、Dには#VALUE!の代わりに AとCがゼロとした計算結果が並びます。 説明不足でしたが、#VALUE!を出なくして空欄にしたかったので、他の方に教えていただいた「 =IF(A8="","", 」を書き加えました。

関連するQ&A

  • エクセルのif関数で

    エクセルのif関数でこれができるのかわかりませんが、 C1~C10の中の文字列の中にA1と同じ文字列があればB1に「1」を入れ、なければ「2」を入れるということをやりたくて B1のセルに IF(OR(C$1:C$10=A1),1,2) という計算式を入れました。 関数の引数の中の数式の結果では、正しい結果が表示されてるのですが、B1のセルには間違った結果が表示されます。 また、B2以下B20まで計算式をコピーするとB11以下は#VALUE!になってしまいます。 一つ一つを見てみると、どうやらセルに正しく表示されるのはAの行とCの行が=だった場合のみのようです。 #VALUE!が表示されているセルも含めて、数式の結果では正しい結果が出ているのにセルの表示が違っているのが納得できませんが、おそらく何かが間違っているのでしょう。 間違いを教えてください。 よろしくお願いします。

  • エクセルで・・

    ご教授ください。  エクセルでの計算ですが、A列・B列に数値が入りC列にaを入力、D列にA列xB列と入っているのでその計算結果をD列なり他の列に表示したいのですが。 又、同じC列にbを入力した場合A列+B列の計算結果を表示させるにはどのような方法を使って作成するのか?宜しくお願いします。

  • エクセル SUMPRODUCT関数でこんな場合は?

    Excel2000です。 添付画像のような表があります。 A列、B列に数値、C列に文字列です。 A列の数値は単なる数値ではなく、計算式で求められています。 したがって表内A列の何も表示されていないセルは、計算の結果 ="" になったものです。 B列の数値は直接入力した単なる数値です。 この表で仮に、C列がAの場合のA列合計を求めるため、D6に =SUMPRODUCT((A1:A5)*(B1:B5)*(C1:C5="A")) としてみましたが、="" を乗じているためVALUEエラーになります。 =""を排除しようと、 =SUMPRODUCT((A1:A5<>"")*(A1:A5)*(B1:B5)*(C1:C5="A")) としてみましたが、やはりVALUEエラーになります。 こういう場合はどうしたらよいのでしょうか? ="" を =0 に変えるという回答以外でお願いいたします。

  • このプログラムの間違いがわかりません

    独学でプログラムを勉強し始めましたのですが、どうもうまくいきません。自分ではうまく作れたと思ったのですが。。。プログラムの目的は、お互いに数値を入力していって、15を越えたら、越えた方の負けというプログラムを作ったつもりですが、どこかに間違いがあるようなので、よろしければ、皆様、どこが間違いか教えて頂けないでしょうか?(自分が始めて作ったプログラムなので、真に申し訳ないのですがループ文や自作関数を使ったプログラムであれば嬉しいです。) #include<stdio.h> int main() { int i[8],j[7],sum,a,b ; printf("1、2、3のどれかを入力しなさい。15を超えた人が負けになります。\n"); while(sum<15){ /*ループ*/ ///////////////////player Aの範囲////////////////////// printf("player A入力しなさい"); scanf("%d",&i[a]); /*数値入力*/ sum= sum+i[a]; /*現在の合計*/ printf("現在%dです。",sum); /*結果表示*/ if(sum>=15){ /*判定1*/ printf("player Aの負け!!!"); } else{ ///////////////////player Bの範囲//////////////////////// printf("player B入力しなさい。"); scanf("%d",&j[b]); /*数値入力*/ sum=sum+j[b]; /*現在の合計*/ printf("現在%dです。",sum); /*結果表示*/ if(sum>=15){ /*判定2*/ printf("player Bの負け!!!"); }else{ } } return 0; } }

  • Excel 条件付きの条件先が式の場合

    Excelでたとえば A1に入力された数値、B1にはA1を引数とした計算結果があるとします。B1の計算結果が0.09だった場合だけC1に1を、そのほかの場合は2を表示させようとしました。 C1に =if(B1=0.09,1,2) の式を入れましたが、B1の計算結果が0.09でもC1には2が表示されます。そこで、C1に =if(int(B1*100)=9,1,2) の式を入れても結果は同じで、D1に=text(int(B1*100),0) の式をいれてからC1に=if(D1="9",1,2) でやっと1が表示されました。 これは当たり前のことなんでしょうか。このような方法をとらないと、数字の認識は難しいのでしょうか? 教えてください。

  • エクセル2007の計算について

    エクセル2007の計算についてですが、A列に100個データがあり、B列とC列にそれぞれ1個データがあるとします。そこで、D列のD1にA1*B1-C1の計算結果を表示させました。次に、D2以下も同様の計算をするために、D1のセルを選択して、矢印無しの十字キーを下に伸ばしてD2にA2*B1-C1、D3にA3*B1-C1・・・、D100にA100*B1-C1の結果を表示させようとすると、100個分の計算結果は表示できるのですが、D2はA2*B2-C2、D3はA3*B3-C3・・・というように、B列とC列も一つずつ下がって計算されてしまいます。この場合、B列とC列には1個しかデータがない(B1に一個、C1に一個)ため、D2以下の計算結果は0になります。B列とC列を下げずに、A列のデータだけ下げて連続計算するにはどうすればよろしいでしょうか。

  • エクセルでの一括計算方法がありましたら教えてください

    エクセルでの一括計算方法がありましたら教えてください A2~A60の1列に数値が入っています。 B2~B60の1列にも数値が入っています。     A2について、「A2+B2、A2+B3、・・・・、A2+B60」と計算し、     結果をCの一列C2、C3、・・・・、C60に表示     A3についても同様に「A3+B2、A3+B3、・・・・、A3+B60」と計算し、     結果をDの一列D2、D3、・・・・、D60に表示 以下同様にA60まで行いたいのですが、簡単に計算できる方法はあるでしょうか? セルごとに関数を入れる以外に方法があれば と思って質問しました。 ご存知の方がいらっしゃいましたら ご指導 よろしくお願いします。

  • エクセル IF関数が入った条件付き書式について

    エクセルにおいて、セルA1、B1、C1があるとします。A1、B1には数値が何も入力されていない状態で、C1に計算式「=SUM(A1)/B1」が入っているとします。このままでは、C1は、「#DIV/0!」と表示されます。 この表示を消すために、C1にIF、ISERROR関数を使い、「=IF(ISERROR(SUM(A1)/B1),"",SUM(A1)/B1)」の計算式を入力します。 このままでもいいのですが、C1の値が「10以上」になった時に、C1のセルに色を付けたいのです。 書式→条件付き書式→セルの値が→次の値以上→10 にすると、セルに何も値が入っていない(空白)状態で色だけが付いてしまいます。 色々調べると、IF関数の""の空白が文字列のため、数値より大きいとみなされている事が原因っていうことは、分かりましたが、色々試してみても出来ません。何かいい方法はございますでしょうか? ご教授お願いします。

  • エクセルでランダムに隠しホールを設定する方法No2

    数日前にゴルフの新ぺリア方式のときの隠しホールをエクセルで ランダムに設定する方法を質問させていただいたものです。 IF関数で対象ホールを絞り込みSMALL関数で抽出し、 その後、MOD関数でホールNoを切り出す方法をここで 教えていただいたのですが、どうしてもうまくいかず、 #VALUE! が帰ってきてしまいます。 簡便化するため以下のように検定してみました。 A列に1-9までの番号。 B列には2-5までの任意の数。 仮にB列の数字が"4"であるものの中から どれか一つを選ぶという条件を付け、 D列のD2にその番号(1-9)を返す。 というサンプルにいたしました。 しかし、やはりD2の結果には#VALUE!が帰ってきます。 ただ、B2が"4"で有った場合のみ#VALUE!ではなく 数値が表示されますが、この場合も、B列に"4"が 割り当てられている番号だけでなく、A列の番号の どの番号でも再計算のたびに表示されます。 A列 B列 1 3 2 2 3 5 4 3 5 4 6 3 7 5 8 2 9 4 C列には抽選のためのランダム数を割り当てるため C2=RANDBETWEEN(1,99)*100+A2 D2には抽選の結果当選した番号を表示するため D2=MOD(SMALL(IF(B2:B10=4,C2:C10,""),1),100) と入力しました。 検証していただき、訂正の必要がある箇所がありましたら ご指摘いただきたく存じます。

  • エクセルで、関数が思い通りの結果を返しません

    │ 支出  │ 収入  │ 累計 │ │ ̄ ̄ ̄ ̄│ ̄ ̄ ̄ ̄│ ̄ ̄ ̄| ̄ ̄ │      │      │  A │ │____│____│___│__ │      │      │     │ │  B   │  C   │ D   │ │____│____│___│__ │      │      │     │ │      │      │  E  │ エクセル用計算式を作りたいのですが、詰まってしまったので、アドバイスをお願いします。 やりたいこと…自動で累計を出していく ・Dに入れるための式  (1)もしBに数字が入っていればAとの減算の結果をDに。  (2)もしCに数字が入っていればAとの加算の結果をDに。  (3)B・Cが空欄であればDも空欄。 ((4)Aが空欄であればDも空欄。)←できればこれも入れたい 上記のために、  =IF(BC>="","",IF(B>=1,SUM(A,-B),IF(C>=1,SUM(A,C)))) という式を作ってみたのですが、エラー表示は出ないものの、うまくいきませんでした…。 ISBLANKを使ってみたほうがいいのでしょうか?

専門家に質問してみよう