プロが教える店舗&オフィスのセキュリティ対策術

エクセルで現場ごとに日報を作成しています。
(現場単位で、2~3ヶ月で1つの日報ファイルを作成しています)

1日1シートで作成し、シート名は日付(例:1月2日なら「0102」)でつけています。
毎日かかった経費と、その日までの合計(累計)の経費をだしたいと思っています。

その日の金額(A1)に、前日までの累計の金額(一つ前のシートのA2)を足して、その日までにかかった経費を(A2)に表示させたいと思い

色々と調べて以下の方法にたどり着きました。
名前の定義に「前シート」として、参照範囲に
「=MID(INDEX(GET.WORKBOOK(1)&T(NOW()),GET.DOCUMENT(87)-1),FIND("]",INDEX(GET.WORKBOOK(1)&T(NOW()),GET.DOCUMENT(87)-1))+1,31)」を入力し
累計を求めたいセル(A2)には
「=INDIRECT("'"&前シート&"'!A2")+A1」と関数を入れました。

これで一応でるようにはなったのですが、エクセルを閉じて、再び開くと
A2には「#NAME?」と表示されてしまい
また名前の定義を設定し直さなければなりません。

私一人が使うわけではなく年配の上司も見るので、できれば開くたび、数字が表示されるようにしたいのですがどうすればよいでしょうか?

ちなみに、他の名前の定義を使用している関数については、再び開いても数字が表じされています。


あともうひとつ・・・名前の定義以外で同じように累計を計算する関数はありますか?

よろしくお願いします。

A 回答 (3件)

No2です。


>簡単に、関数で一つ前のシートのセルを参照する方法が知りたいです。
ひとつ前のシートを参照する関数はありませんが Cell関数を紹介します。
仮に
現在のシート名が 1113 となっていて 前のシート名が 1112 となっているとします。
1113のA1セルに =CELL("filename",A1) と入れてみてください。
そのファイルのパス、ブック名、シート名 が表示されます。
A2セルに =MID(A1,FIND("]",A1)+1,4) と入れるとシート名(この例では 1113)が表示されます。
A3セルに =TEXT(DATE(2010,LEFT(A2,2),RIGHT(A2,2))-1,"mmdd") とすれば前の日付のシート名
A4セルに =INDIRECT(A3 & "!A1") 前の日付のシートのA1の値です。
もちろん一つのセルに記述することもできますが、かなり長くなると思います。

この方法で前の日付のシートを参照することが出来ますが
もし休日などで前の日付のシート名がなければエラーです。

これを応用しますが
別途、シート名の一覧表を準備しておけば如何でしょうか?
シート名一覧シート 
 A
1111
1112
1115
1116
・・・・
と準備して
A5セルに =INDEX(シート名一覧!A1:A100,MATCH(A2*1,シート名一覧!A2:A101))
として 1113よりひとつ上の行の値を検索して Indirect関数で使います。

ところで、新しい日付のシートは毎日ひとつづつ作成されているのでしょうか?
例えば
VBAを使って ボタンを押せば新しいシートが作成される。
作成されたシートに所定の日報のフォーマットを貼り付ける。
作成されたシートの名前を変更する。
累積を出したいセルに 前日までの累計を計算させて入れる。

上記のボタンを作成しては如何でしょうか?
シートを準備する作業から簡素化できますし、ついでに累計が自動で入るだけのことです。

私としては、先に紹介したように
データのシート
日付  天気 機械名 コメント 労務費 機械費
11/12  晴れ  A   ごめん  100  200
・・・・
とデータが入るような仕組みと検索して表示させる仕組みを考えて方が全く便利だと思います。
例えば
入力シート
 日付  11/12
 天気  晴れ
 機械名  A
 コメント ごめん
 労務費  100
・・・と入れておいて ボタンを押せば データのシートに追加される

表示のシート
入力シート
 日付  11/12
 天気
 機械名
 コメント
 労務費
と日付を入れると 必要な情報が表示される Vlookup関数やSumif関数を配置します。
ほかにも金額などは 月集計ができたりグラフにできたり便利になるはずです。
    • good
    • 2

>できれば開くたび、数字が表示されるようにしたいのですがどうすればよいでしょうか?


VBAの力を借りれば簡単に出来ますが如何でしょうか?
VBAのイベントに Bookを開いたときに実行されるイベントがありますので
そこに 西条のシートに 2番目以下の合計を入れることになります。

別の提案ですが
>1日1シートで作成し、シート名は日付(例:1月2日なら「0102」)でつけています。
>毎日かかった経費と、その日までの合計(累計)の経費をだしたいと思っています。
ここから直します。
データを一枚のシートに日付と一緒にひたすら縦方向に入れていきます。
上司に見せるシートに集計する期間を入れるセルを準備して
そこで指定した期間の合計が表示させる式を準備したら使いやすいと思います。
例えば
指定した日付の一覧がほしければ 同じ日付を
指定した月の合計がほしければ その月の最初の日から最後の日にする
と云ったように使います。
多分、一つのファイルで何年分も管理できますよ。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。

質問の仕方が悪くて申し訳ありません。

質問を簡略化するために、かなり説明を省いてしまいましたが
実は累計をだしていくのは1つだけではなく
労務費・機会費など、○○費がいくつもあり
他にも、現場の内容(天気や使用した機会名、コメント等)を記載している為
計算するためだけの表形式ではなのです。
上司も金額だけではなく、それら全てをチェックしています。

ですので、今ある日報の状態で
関数などで管理できればと思い質問させていただいました。

本当にすみません。

簡単に、関数で一つ前のシートのセルを参照する方法が知りたいです。

お礼日時:2010/11/13 23:54

前日経費の明細なら「範囲」指定でしょうけど、合計だけでいいなら参照するセルは1つなので、単純にしたらいいんじゃないでしょうか?



数式を入れるのも間違いないと思いますが、
本日のシートの入力セルに「=」と入れておいて、前日のシートにジャンプし、参照すべき「合計」のセルをクリック。エンターすれば、同じ数字が現れます。

後はそのセルに続きの数式を入れるも良し、別のセルで計算するも良し。。。。

と言う訳にはいきませんか?
    • good
    • 2
この回答へのお礼

早速の回答ありがとうございます。

質問の仕方が悪くて申し訳ありません。

質問を簡略化するために、かなり説明を省いてしまいましたが
実は累計をだしていくのは1つだけではなく
労務費・機会費など、○○費がいくつもあり
場所もバラバラにあります。
そして現場も1つではないため、日報も現場の数だけ作成しています。
それらを手入力で毎日やっていくのは間違えそうで心配です。
ですので関数などでできればと思い質問させていただいました。

本当にすみません。

お礼日時:2010/11/13 23:32

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

このQ&Aを見た人はこんなQ&Aも見ています