• ベストアンサー

エクセル2003で出納帳を作成しているのですが…

出納帳を作成しています。繰越の部分でかなり悩んでいます。 月別で、シートを分けた場合ですが、 例えば9月分が終わり10月分がスタートするところを想定します。 9月分といってもどこで終わるかわかりません。1ページ目で終わる場合もあれば、2ページ目半ばで終わる場合も当然想定できます。 どこのセルでもその月の終わりの繰越欄がきてもおかしくはありませんよね?? ここで疑問に思ったのですが、 (1)9月分の繰越を10月分のシート(別のシート)に自動的に反映する方法 (2)どこのセルで繰越がきても10月分のシートの一番最初が前月繰越となるように反映させる方法 (3)印刷時にその月の繰越欄から下を印刷させない方法 以上3点です。 素人であまり知識がありません。この要求は無理がありますでしょうか?? よろしくお願いします。

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

  • ベストアンサー
  • zenjee
  • ベストアンサー率47% (50/106)
回答No.4

補足質問の最後のくだりへの回答を書き忘れてましたので追記します。 >F列には最終行の数値例えば10000が入力されていますが、その下のセルの数字は何もありません。ですが、関数は入力されています。関数の入力もしてはいけないのですか?? >F列の最終行を次の月の最初(F4のセル)に返したい。 私は例として残高の列はD列、1行目は見出し行、2行目から入金・出金・残高の欄、最終行(残高が入っている行)の下はすべて空欄(式も何も入ってない)という前提で計算式を設定をしておりますけれど、もしこれが残高はF列で、計算行(数値が入っている行)が4行目から始まり、F1:F3は空欄又は文字列、最終行の下に計算式がはいっていてその式が例えば =IF(AND(D5="",E5=""),"",F4+D5-E5)) (その行の残高=前行残高+入金-出金……入出金欄がいずれも空白の時は残高も空白で、どちらかが入っておれば残高が出るという式)のように入っているとすれば、 Sheet1の作業セル(例えばG4)に入れる計算式は =INDIRECT(ADDRESS(COUNT(F:F)+3,6)) となり(COUNTAでなく数値の個数を計算するCOUNT。3というのは開始行の上の文字列又は空白行数で、6というのは左から6列目という意味)、次Sheetの「F4」に入れる式は =Sheet1!G4  となります。これでやってみてください。

gawahann
質問者

お礼

zenjeeさん私の質問にいつもご回答くださり、本当に感謝しています。上の式で、いけました!!またこれからも、エクセルに関して質問しようと思っていますが、お暇があれば、またご教示よろしくお願いします。

その他の回答 (3)

  • zenjee
  • ベストアンサー率47% (50/106)
回答No.3

セルの位置は私が例示したとおりにして試されたのでしょうか。そうでなければ正答は出ません。D1に例えば「残高」という文字列を入力されず、空白のままだったら正しい答は出ません。 =INDIRECT(ADDRESS(COUNTA(D:D),4)) の計算式をもう一度説明すると、まず COUNTA(D:D) というのはD列中に入力されたデータの数を返す式です。だから見出を含めて途中に空白行がない限り、1行目から最終行までの入力行数が返ってきます。 この行数を仮に50行だとします。 次に「4」というのはD列が4列目という意味です。 だから ADDRESS(COUNTA(D:D),4) というのは、50行目の4列目という意味で「$D$50」という(残高が計上されている)D列最終行のセル参照が文字列として返ってきます。 これをINDIRECT関数により参照文字列である「$D$50」の数値をE1に返す訳ですから、必ず正しい答が出ます。 セル指定等が間違ってないかもう一度確かめられて、それでも出来なければ、式を一つずつ分解して答を出してみてください。私はNo.2回答の内容で何度も確かめて正答が出ることを確認しております。

  • zenjee
  • ベストアンサー率47% (50/106)
回答No.2

ご質問(1)、(2)は、翌月繰越となる行(当月の最終行)がどの行で終わっても翌月の最上行列セルに前月繰越額を自動的に反映させたいという趣旨だと理解してお答えします。 とりあえず、シート名を「9月」、「10月」、シートの1行目は見出し行として(例えばA列は月日、B列は入金、C列は出金、D列は残高)、2行目から入出金及び残高の入力行とします。したがって「9月」のD列最終行が翌月繰越高、「10月」の「D2」が前月繰越高となりますね。 このように仮定し、「9月」の例えば「E1」を作業セルとして、次の計算式を入力します。 =INDIRECT(ADDRESS(COUNTA(D:D),4)) としてD列最終行の数値を返しておきます。 次に 「10月」の「D2」の計算式は ='9月'!E1   でOKです。 ただし、お断りしておきますが、「COUNTA(D:D) 」はD列に1行目から最終行まで文字・数値を問わずすべてにデータが入っており、最終行より下の行には全くデータが入っていないことを前提に成り立っていますので、最終行までの間に空白セルがあったり、最終行より下に何らかのデータがあるとこのままでは成立しないのでご注意ください。 なお、作業セル(「9月」の「E1」)を設けないで直接翌月の繰越高(「10月」の「D2」)に前記の計算式を一括して入力する方法もありますが、分かりやすくするため分けました。 質問の(3)の印刷範囲の設定ですが、可変行を含む印刷範囲の設定をワークシート関数で自動的に行うのは無理ですね。マクロを組むしかないでしょうが、私は自信がないので回答を控えます。他の方の回答に期待してください。 ただし、通常の作業としては、当初予測される最終行までを一旦印刷範囲に決めておいて、最終行に近くなったところで行の挿入や削除を行って入力すれば、印刷範囲がその分増減されるという方法はありますね。

gawahann
質問者

補足

試してみましたが、関数を入力しても最終行の値が反映されませんでした。何かが違うのでしょうか?? 具体的にいいますと、F列の最終行を次の月の最初(F4のセル)に返したいです。 =INDIRECT(ADDRESS(COUNTA(D:D),4))の最後4という数字は、4列目だから4??なのですか?? また、F列には最終行の数値例えば10000が入力されていますが、その下のセルの数字は何もありません。ですが、関数は入力されています。関数の入力もしてはいけないのですか??

  • megchang
  • ベストアンサー率29% (20/68)
回答No.1

(1)、(2)については ・31日まで記録できるシートを1枚作る ・シートをコピーし、1年分用意する ・月末の数字が月初に自動的に反映されるよう、それぞれのシートにリンク貼り付けする(ファイル→形式を選択して貼り付け→リンク貼り付け) で、自動的に計算し直してくれると思います。 (3)は、先に印刷したいセルを選択して印刷プレビューを見ると、選択した部分のみ印刷させることが出来ますよ。 もしご存知だったらごめんなさい。

関連するQ&A