• ベストアンサー

エクセルの条件付きの関数(IFなど)の使い方

よろしくお願いします。 エクセルの表計算で、例えば、”おこづかい帳”のような、収入または支出を各行ごとに一番右の合計欄に自動で計算していく方法について質問します。 例として、3列2行の表で説明します。 A列は収入、B列は支出、C列は残高です。 一行目のA1、B1、C1は最初の一日目なのでC1セルだけに当初のお金500円が入力されています。二行目のB1またはB2の必ずどちらか1つだけに(収入か支出の)金額が入るとしてその時のB3の残高を自動で算出したいです。(実際の表は、それの繰り返しで何行も下に続いていきます。)B1に収入が200円あれば、B3は700円になり、B2に支出200円があれば、B3は300円になるような計算です。 次のような三つの条件になります。 (1)B1(収入)が空欄の時はB2(支出)の値を用いて、B3=A3-B2(2)B2(支出)が空欄の時はB1(収入)の値を用いて、B3=A3+B1 (3)B1、B2ともに空欄の時は、なにも計算しない(B3も空欄になる) そして、B3に入れる式としてこのような式を作りました。 =IF(OR(B1="",B1>0,B1B2=""),(B3=A3-B2,B3=A3+B1,B3="")) しかし、うまく計算されません。 どこを直せばよいでしょうか?またはIF以外の関数で必要なものがあるのでしょうか?

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

  • ベストアンサー
  • kori_kori
  • ベストアンサー率40% (51/127)
回答No.2

質問文のセルがちょっと違っているようなのですが    A(収入)| B(支出)| C(残高) 1       |      | 500 2  200  |      | 700 3       |  200 | 500 このようになっているのですよね? C2に入れる計算式ですが =if(A2>0,C1+A2,if(B2>0,C1-B2,"")) もしもA2が0よりも大きければC1+A2 もしもB2が0よりも大きければC1-B2 A2もB2も0より小さければ空白 これで、どうでしょうか?

Bonar
質問者

お礼

ご回答ありがとうございました。質問文のセルの表記に間違いがあったようで、すみませんでした。また、回答文の中に例として”表”の形式で記していただきありがとうございました。私がこのように記して質問すべきでしたが、この質問欄には”格子枠”は描けず、文章しか書けないという先入観があり、文章表記に徹してしまいました。 ご指導いただきました計算式は、今回求めていた結果で満足しております。長さも短くシンプルでした。 どうもありがとうございました。

その他の回答 (4)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.5

次の方法は如何でしょうか。 C2セルに=IF(COUNTBLANK(A2:B2)<2,SUM(INDEX($C$1:C1,MATCH(MAX($C$1:C1)+1,$C$1:C1,1)),A2,-B2),"")を入力し、下方向にコピー

Bonar
質問者

お礼

アドバイスの式を表に入れてみたところ、正しく計算されました。また、A,Bのセルを任意に空欄にして試したところ、その残高欄Cはエラーも、ゼロも表示されず、求めていた表示方法でした。 ご回答ありがとうございました。

  • aces_p
  • ベストアンサー率48% (49/102)
回答No.4

OR関数は、引数で指定した複数の条件のうち、 いずれかが正しい場合にTRUEを返します、 すべての引数が正しくない場合にはFALSEを返します。 =IF(OR(B1="",B1>0,B1B2=""),(B3=A3-B2,B3=A3+B1,B3="")) の件ですが、 B1B2="" は B2="" の入力ミスとして見てみました。 =IF(OR(B1="",B1>0,B2=""),(B3=A3-B2,B3=A3+B1,B3="")) これを入力してみると、#VALUE!となるはずです。 これは引数を間違えているというエラーです。 それ以前の問題ですが、私には この式を解読してみましたがよくわかりません。 ご説明もよく読んでみましたが矛盾が多く読解不能でした。 (あえてどこがとはつっこみませんが) 以下のようなものはいかがでしょう。 A列は収入、B列は支出、C列は残高です。 1行目はタイトルとして使用します。実データは2行目から。 まず2行目を開始行として、収入・支出を入力せず、 現在の残高のみ入力しておく。 3行目からが1日目ということです。 基本仕様は、 前日残高に収入(+)と支出(-)を合計して、その日の残高を算出する。 というようにします。 1日目の残高部分のC3セルに入力する数式として、 =C2+A3+(B3*-1) = C2 + A3 + (B3*-1) 前日残高 1日目収入 1日目支出 でどうでしょうか。 データの入力有無に関わらず計算はしてくれます。 また、 -1 をかけているのは、支出なのでマイナス計算させるためです。 入力上はマイナスをつけることなく普通に入力してOKです。 これの問題点は、 まだおとずれていない先日付でもすでに残高が表示されることです。 単純に回避しようとして、 その日の収入・支出の合計が0の場合は表示しない等 の処置をすると、 残高が引き継がれていない日が発生しエラーとなります。 それも回避する方法もあるのですが、 勝手ながら質問者様のレベルを考えるとこれはまたの機会に・・・

Bonar
質問者

お礼

私質問の中の表示に誤りがあり、お手数をお掛けし、すみませんでした。ご指導いただいた式を実際に入力してみました。計算結果は正しくでますが、ご説明されていたとおり、『まだおとずれていない先日付でもすでに残高が表示される』になるようで、A4の表の最下行まで最後のデータの日の残高数字が続いて表示されました。今回、これをなんとかなくしたいと思っていました。 ご回答ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

http://okwave.jp/qa3134065.html の私の回答をご覧ください。質問以上のことも答えていると思うが。

Bonar
質問者

お礼

ご回答ありがとうございました。ご提示の式の中の関数について調べて今回の式作りの参考にさせていただきます。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> 二行目のB1またはB2の必ずどちらか1つだけに A2またはB2、が正しいと思います。 空欄だろうがなんだろうが、計算すればよろしいか、と。 C2セルに式[=C1+A2-B2]を設定。あとはそのまま下方向にコピー。 C3セルにコピーされた式は自動的に[=C2+A3-B3]になってます。

Bonar
質問者

お礼

質問文の中に誤りがあり、お手数をお掛けし、すみませんでした。 =C1+A2-B2だと、ABが空欄の行では、引き続き上のセルの数字が表示されてしまうので、今回の質問でそうならない式を見つけたいと思っていました。 ご回答ありがとうございました。

関連するQ&A