中小企業の働き方改革をサポート>>

はじめまして、こんばんは。
いろんな方の質問と回答を参考に現金出納帳を作成中です。
出納帳の様式を
 A    B    C
収入   支出   残高

として、C1には繰越残高を、C2に、
IF(AND(A2="",B2=""),"",C1+A2-B2)
と入力し、C2の式をC列にコピーしました。
A列、B列どちらかに値があるとうまくいくのですが、
一度、A列、B列ともに空白の行を参照してしまうと、
C列は空白のセルになり、それ以降のC列に上の式が
通用しなくなり、#VALUE!になってしまいます。

この場合は、この式にさらに、関数を追加しなければいけないのでしょうか?
それか、もっと簡単にできるコピーできる式があるのでしょうか?
どちらでも構いませんので是非教えてください。
よろしくお願いします。

A 回答 (4件)

>出納帳の様式を


> A    B    C
>収入   支出   残高
>として、C1には繰越残高を・・・・・

との記述がありますので、C1には「開始残高」が入力されているものと考えられます。
現金出納帳の考え方として「現在残高」は最終異動があった「前回残高」に今回の「収入」を加え「支出」を差し引くと言う考え方が自然ですのでご質問者の出納帳もそのような考え方でお作りになろうとしているのだと思います。

もうひとつの考え方として、「現在残高」は
「開始残高」に今までの「収入の総和」を加えて
「支出の総和」を差し引いたものと考えるこきともできます。
ちなみに、その考え方でC2に記述すべき関数を考えると
以下のようになります。この方式だと、ご質問者のご希望をかなえられるような気がするのですが・・・

=IF(AND(A2="",B2=""),"",SUM($C$1,+SUM(A$2:A2)-SUM(B$2:B2)))

なお、A1、B1に値が入力されていた場合は、収入、支出の各々の総和はA1、B1の値を無視して計算するようになっています。

ただ、ひとつ疑問なのが、現金出納帳で「収入」も「支出」も発生しない行というのがあるのでしょうか?
    • good
    • 0
この回答へのお礼

で・で・できましたぁ!思い描いていたとおりに!
私の頭は凝り固まってしまってこんな考え方は浮かびませんでした。
発想の転換?というのでしょうか。小学生の頃から算数嫌いだった私には目からウロコで、なおかつ計算式の意味も理解できました。
とても勉強になりました。
本当にありがとうございました。

ちなみに空白セルは摘要欄(A列より左側)でセル内改行や結合すると残高以降の列に作った別の項目で支障が出て、修正が大変なので2行3行と使ってしまった箇所があるんです。そのため収入、収支セルに空白が発生してしまいました。要領が悪いんですね・・

お礼日時:2005/04/23 12:22

しばらく考えてみましたが、


>一度、A列、B列ともに空白の行を参照してしまうと、
>それ以降のC列に上の式が通用しなくなり、#VALUE!になってしまいます。
ということは、収入と支出が必ずしも、両方立つわけではない、という意味ですね。
そうすると、#VALUE! になるということではありませんか?

標準的にどんな式が良いのか、私にはわからないのですが、以下のような式はいかがですか?ただ、INDIRECTという揮発性関数を使用していますので、入力しなくても、保存を要求されます。

C2:~
=IF(COUNT(A2,B2)=0,"",INDIRECT("C"&MATCH(10^15,$C$1:C1,1))+SUM(A2,-B2))

COUNT(A2,B2)は、文字列の長さ 0 ("")でも、ブランクでも、同等に扱います。
今回の場合は、収入・支出の列には、文字列の長さ0は、入らないようにお見受けしました。

INDIRECT("C"&MATCH(10^15,$C$1:C1,1))
変則的ですが、最終行の数字の入っているセルを探すテクニックです。

なお、
SUM(A2,-B2)
は、表計算初期の時代の使い方で、文字列が入ると、0と扱うテクニックです。

今のところ、こんに式しか思いつきません。
    • good
    • 0
この回答へのお礼

ご丁寧な回答ありがとうございます。
早速やってみたのですが、うまく出来ませんでした・・
私の初歩レベルでは理解しながらというのは難しく、そのまま入力してしまったからでしょうか。
でも、いろんな技を教えていただきとても参考になりました。引き続き勉強して、色々な関数を理解できるように頑張りますね。

お礼日時:2005/04/23 12:00

=IF(AND(ISBLANK(A2),ISBLANK(B2)),"",$C$1+A2-B2)


A列,B列 空白の場合です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
教えていただいた式でやってみました。
A列B列が空白の時はC列も空白になり、見た目は理想どおりなのですが、C列にこの式をコピーしていくと$C$1と絶対番地なので残高がすべてC1セルを基に計算してしまうようです。
そこで$を外すとやはりエラーになってしまいます。説明が解りづらくすみません。この式も参考にさせていただき何とか応用をきかせて頑張ってみますね。

お礼日時:2005/04/23 11:28

>>IF(AND(A2="",B2=""),"",C1+A2-B2)


               ~~~ここがブランクの原因。

IF(AND(A2="",B2=""),C1,C1+A2-B2)
これで上のセルの数値が入ります。
    • good
    • 0
この回答へのお礼

早々のご回答ありがとうございます。
教えていただいたとおりで、できました!!
書類の提出期限が迫っており、とても困っていたので本当に大感謝です。
欲張って質問させていただくと、これでさらにA列B列ともに空白セルの場合C列にも値が入らないようにすることはできるでしょうか?
現状は、A列B列どちらかに値が入っているセルがほとんどなのでC列でダブった値をクリアするだけで十分なのですが、とても勉強になるので教えていただければ幸いです。

お礼日時:2005/04/23 02:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで、残高を空白で表示したいんです。

とっても、おばかな質問ですいません。エクセルで収入と、支出があって、残高を出していく表を作ったとします。収入や、支出が記入されていない欄の残高を空白で、表示したいんです。そのものズバリの関数式を教えて下さい。IFを使うんでしょうか?

Aベストアンサー

追記 訂正 です。

>上から必ず順番に、収入や支出を入力して行くのであれば
>=IF(COUNT(A3:B3),SUM(A3,C2,C$1)-B3,"")

これC3(最初の行)の時だけですね!

C4からは C$1(繰越金)を外して下さい!
=IF(COUNT(A4:B4),SUM(A4,C3)-B4,"")

-----------------------------------------------
>行を飛ばして入力する時もある場合は
>=IF(COUNT(A3:B3),SUM(A$3:A3,C$1)-SUM(B$3:B3),"")

こちらは、そのままでOKです。

Qexcelで出納帳を作りたいのですが・・・・

出納帳を作るのに収入・支出・残高と項目を作りました。けれど残高の計算式が分かりません。
別にマクロを使ったりしないで普通のエクセルの表でいいんです。
残高の計算式が分かる方は教えてください

Aベストアンサー

>D6の所に=D5+B6-C6を入力し入ても図2のように何も入力されないようにはできませんか?

D2には、=IF(COUNT(B2:C2)>0,B2-C2,"")
D3には、=IF(COUNT(B3:C3)>0,D2+B3-C3,"")

として、D4以下はD3をコピーします。

QExcelで金銭出納帳。繰越残高を翌月へ・・・

Excelで金銭出納帳を作成し、使用していこうと考えています。

1シートがひと月分です。

当月の残高を翌月の繰越額へもっていきたいのですが、シートをコピーして使うためか、「Sheet1!A1」の数式が使えなくて困っています。

1月のシートをコピーし、2月の繰越欄には「Sheet1!A1」を手入力したのでいいのですが、3月分は2月分のシートをコピーして使用するつもりです。
そうすると、繰越欄には1月末の残高が出てきてしまいます。

毎回入力すればいいのでしょうが、できれば自動で入力させたいです。

1つのシートに複数月の出納帳は管理上不自由なため、1シートでひと月分というスタイルは崩せません。

1~12月分のシートをあらかじめ作成しておき、ひとつひとつのセルに「Sheet1!A1」「Sheet2!A1」・・・と数式を入れていくしか方法は無いのでしょうか。

繰越額だけでなく、出納帳の摘要に入れる「○月分」といった連続した数字も新しいシートにしたときに自動で連続入力できる方法はありますか?

Aベストアンサー

>毎回入力すればいいのでしょうが、できれば自動で入力させたいです。

自分がいま何月だから,自分が欲しい「先月」は「いったいなんて名前のシートなのか」が判れば良いワケです。

一番簡単な方法として「1月はシート1」じゃなく,例えば「201301」というシート名の付け方をします。
こうしておくと自分のシート名を計算させて,例えば3月シート(201303)からは201302シートを見に行けば良いと計算できますし,1月シート(201301)から「間違って」201312シートを見に行ってしまうことも無くなります。

手順:
201301,201302シートを用意する
ブックを「必ず」一回保存しておく
「先月」が無い201301シートの先月繰越額欄には手で数字を記入する
201302シートに
=INDIRECT((RIGHT(CELL("filename",A1),6)-1&"!A1"))
と数式を記入
201202シートをコピーし,シート名を201303に変更する。





もう一つの方策としては,マクロを併用して例えば「一枚左隣のシートの指定のセル」を見に行くユーザー定義関数をブックに登録して利用する事もできます。マクロを使うこと以外は,こちらの方があなたの「希望していた内容」に近いかもしれませんが,こういう事を普段使いの中だけで行う機能は,エクセルにはありません。またこの方策では,シートが必ず例えば「左から右に並んでいる」のが前提です。


手順:
ALT+F11を押す
現れた画面で挿入メニューから標準モジュールを挿入する
現れたシートに下記をコピー貼り付ける

function getleft(byval Target as excel.range) as variant
getleft = target.parent.previous.range(target(1).address)
end function

ファイルメニューから終了してエクセルに戻る
セルに
=getleft(A1)
のように記入する。

>毎回入力すればいいのでしょうが、できれば自動で入力させたいです。

自分がいま何月だから,自分が欲しい「先月」は「いったいなんて名前のシートなのか」が判れば良いワケです。

一番簡単な方法として「1月はシート1」じゃなく,例えば「201301」というシート名の付け方をします。
こうしておくと自分のシート名を計算させて,例えば3月シート(201303)からは201302シートを見に行けば良いと計算できますし,1月シート(201301)から「間違って」201312シートを見に行ってしまうことも無くなります。

...続きを読む

Qエクセルで出納帳を作成しています。

エクセル2003で出納帳を作成しています。
預金口座の入出金・振込等を別のシートでも作成したいのですが
出納帳に預金口座の入出金等を入力すると
自動的に口座のシートに反映させる方法を教えてください。

Aベストアンサー

こんばんは!
またまた・・・顔を出してしまいました。

なんか交換日記状態ですね!

ところで本題ですが、
確かに補足にあるように
口座から現金の出し入れがあると、現金出納帳の増減と、口座預金の増減が逆になりますよね。

そこで無理矢理って方法になりますが、
↓の画像のように数列ほど作業用の列を作らせてもらいました。
とりあえず、「○○銀行」のみでの説明になります。
かなり長文になりそうです。

まず、Sheet1に連番を付けさせてもらいます。
(これは銀行口座の収入・支出が現金出納帳と逆になることがあるため、とりあえず、出入金関係なく1列に表示させたあと、そこから抽出するためです。)

そして、各銀行毎のSheetに

Sheet1の現金勘定科目にあるものを参照して、出納帳の残高の欄で
銀行関連の出入金は金額を変動させないようにするためです。
G4セルに
=IF(OR(COUNTIF($L$2:$L$10,C4),D4="現金"),G3+E4-F4,G3)
という数式を入れ、なおかつ条件付書式で
「セル値が」→「次の値に等しい」→数式欄に「=G3」として
フォントの色を「白」にします。そして、オートフィルで下へコピーすると
現金出納帳の金額に変動ない場合は数値は表面上では見えなくなります。

H4セルに
=IF(AND(D4=$H$1,COUNTIF(Sheet2!$H$2:$H$10,C4)),ROW(B1),"")
I4セルに
=IF(AND(D4=$H$1,COUNTIF(Sheet2!$I$2:$I$10,C4)),ROW(B1),"")
J4セルに
=IF(E4+F4=0,"",E4+F4)
としてG4~J4セルを範囲指定し、J4セルのフィルハンドルでずぃ~~~!っと下へコピーします。
まず、1ヵ月のデータはこれ以上ない!というくらいまでコピーしておいたほうが良いかもしれません。

Sheet2のA4セルに
=IF(COUNT(Sheet1!$H$4:$I$1000)<ROW(A1),"",INDEX(Sheet1!A$4:A$1000,SMALL(Sheet1!$H$4:$I$1000,ROW(A1))))
として、C4セルまでコピー

D4セルに
=IF($A4="","",IF(COUNTIF(H$2:H$10,$C4),INDEX(Sheet1!$J$4:$J$1000,$A4),0))
とし、E4セルまでコピー

F4セルには
=IF(A4="","",F3+D4-E4)

最後にA4~F4セルを範囲指定し、F4セルのフィルハンドルで下へコピーすると
画像のような感じになります。

これで、Sheet1の操作だけでそれぞれのSheetに反映されないでしょうか?

以上、かなり強引な方法で長々と書きましたが、
参考になれば良いのですが・・・

どうも失礼しました。m(__)m

こんばんは!
またまた・・・顔を出してしまいました。

なんか交換日記状態ですね!

ところで本題ですが、
確かに補足にあるように
口座から現金の出し入れがあると、現金出納帳の増減と、口座預金の増減が逆になりますよね。

そこで無理矢理って方法になりますが、
↓の画像のように数列ほど作業用の列を作らせてもらいました。
とりあえず、「○○銀行」のみでの説明になります。
かなり長文になりそうです。

まず、Sheet1に連番を付けさせてもらいます。
(これは銀行口座の収入・支出が現金出...続きを読む

Q(EXCEL)出納帳に科目別シートを作成したい

添付の画像のような出納帳を作成しています。

「出納帳シート」の『相手科目』は、入力規則のリストを使用して、《リストシート》より選択するように設定しました。

今回は、この『相手科目』をそれぞれ別々のシートに分けて、自動的に集約・合計されるようなものを作成したいと思っております。

Webを検索してみるとVBAを使用する必要があるとの内容を拝見したのですが、自分のExcelファイルに導入する際、どこを書き換えれば良いのか分らず、行き詰まってしまいました。

関数を使用しても、VBAを使用しても良いのですが、VBAについてはあまり知識がありませんので、初心者向けに教えて下さると助かります。

面倒なお願いで申し訳ないのですが、よろしくお願い致します。

Aベストアンサー

>関数を使用しても、VBAを使用しても良いのですが
関数で対応できます。
ご提示の画像が判読できない状態です。
B5は需用費と読めますがそれで良いでしょうか?
また、費目別のシートへ抽出する項目は日付、摘要、入金、出金で良いでしょうか?
日付については下記の数式で良いと思います。
=IF(COUNTIF(出納簿!$B$5:$B$1000,"需用費")>=ROWS(A$5:A5),INDEX(出納簿!A:A,SUMPRODUCT(SMALL((出納簿!$B$5:$B$1000="需用費")*ROW(A$5:A$1000)+(出納簿!$B$5:$B$1000<>"需用費")*10^9,ROWS(A$5:A5))),1),"")
摘要はINDEX関数の出納簿!A:Aを出納簿!C:Cに置き換えれば目的に合います。
=IF(COUNTIF(出納簿!$B$5:$B$1000,"需用費")>=ROWS(A$5:A5),INDEX(出納簿!C:C,SUMPRODUCT(SMALL((出納簿!$B$5:$B$1000="需用費")*ROW(A$5:A$1000)+(出納簿!$B$5:$B$1000<>"需用費")*10^9,ROWS(A$5:A5))),1),"")
入金および出金は摘要を右へコピーすれば良いでしょう。
1行分の数式が確定したら纏めて下へ必要数コピーすれば完了です。
提示の数式は元データ(出納簿)の最大行番号を1000にしてありますので必要に応じて増減してください。
計算結果で0が表示されるセルが見難い場合は条件付き書式で0の場合はフォントの色を白にしてください。

他の費目シートについては需用費シートをシート全体をコピーして、費目の文字列を置換すれば良いでしょう。

>関数を使用しても、VBAを使用しても良いのですが
関数で対応できます。
ご提示の画像が判読できない状態です。
B5は需用費と読めますがそれで良いでしょうか?
また、費目別のシートへ抽出する項目は日付、摘要、入金、出金で良いでしょうか?
日付については下記の数式で良いと思います。
=IF(COUNTIF(出納簿!$B$5:$B$1000,"需用費")>=ROWS(A$5:A5),INDEX(出納簿!A:A,SUMPRODUCT(SMALL((出納簿!$B$5:$B$1000="需用費")*ROW(A$5:A$1000)+(出納簿!$B$5:$B$1000<>"需用費")*10^9,ROWS(A$5:A5))),1),"")
摘要はINDEX...続きを読む

Q(Excel)あるセルに文字を入力しただけで、同じブック内のほかのワークシートにも、同じ文字が自動的に入るようにするには?

こんにちは。
質問内容はタイトルのとおりです。

あるワークシートのあるセルに文字を入力すると、ほかのワークシートのセルにも同じ文字が自動的に書き込まれる方法を知りたいです(ブックは同じ)。複数のワークシートを制御するには、やはりマクロを使うのでしょうか?

よろしくお願いします。

Aベストアンサー

clam_chowderさん、こんにちは。

Sheet1のA1にたとえば「100」と入力しますね。
Sheet2のA1に、これと同じ数値を表示するには、
 =Sheet1!A1
でOKです。

数式をいれるのが苦手なら、
Sheet2のA1セルで「=」を入力すると、数式入力状態に入りますから、
ここでSheet1のシートタブをクリックし、
リンクしたいA1セルをクリックしてEnterすると、
自動的にさきほどと同じ式が入ります。

QWord 文字を打つと直後の文字が消えていく

いつもお世話になっています。
Word2000を使っているものです。
ある文書を修正しているのですが,文章中に字を打ち込むと後ろの字が消えてしまいます。
分かりにくいですが,
「これを修正します。」
という文章の「これを」と「修正します。」の間に「これから」という単語を入れたときに,その場所にカーソルを合わせて「これから」と打つと,
「これをこれからす。」
となってしまいます。
他の文書では平気です。
何か解決する方法があれば教えて下さい。

Aベストアンサー

入力モードが「挿入」(普通の入力)から、「上書き」になってしまっているのだと思われます。
キーボードに[Insert]というキーがあると思いますので、1度押してみてください。


人気Q&Aランキング

おすすめ情報