あなたの人生に効く作品がみつかる手書きのカード♪>>

日計表などの作成にあたって、例えばエクセルのセルA1には日々の金額を打ち込んで、セルB1には、累計額を表示する表を作成したいのですが、どのようにすれば、毎日シートを出して今日の日計を打ち込めば自動的に累計が、前日残に加算されるようにできるか教えてください。前日のシートをいちいちコピーせずに今日の金額を入力すれば、昨日までの累計に加算される資料の作成です。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

質問の意味を完全に捉えていないかもしれませんが。

。。

>前日のシートをいちいちコピーせずに・・・
とあるので、『A列の複数個のセルに当日の日計を入力すると、B列の複数個は前日までの合計で、そこに当日分が加算される』としてみました。
例えば、日計には10個の項目があり、A1からA10までに入力すると、B1からB10に合計が計算されるとしてみました。複雑に考えすぎ?


Sheet1を使用する例です。ツール→マクロ→Visual Basic Editor でVBE画面に移り、
表示→プロジェクトエクスプローラでプロジェクトエクスプローラを表示して、Sheet1をダブルクリック。
出てきたコードウインドウに下記マクロを貼り付けます。
シートに戻り、Sheet1のA列に入力するとその値をB列に加算します。

↓ここから
Const inpColumn = "A" '入力する列名が『A』列の場合

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  With Target
    '単一セルに入力した場合
    If .Count = 1 Then
      '入力する列名に入力した場合
      If .Column = Range(inpColumn & "1").Column Then
        '入力が数値の場合
        If IsNumeric(.Value) Then
          '隣の列『B列』の値に入力した値を加える
          '(Offsetの2番目の1が1つ右のB列を示す)
          .Offset(0, 1) = .Offset(0, 1) + .Value
        End If
      End If
    End If
  End With
End Sub
    • good
    • 4
この回答へのお礼

初めまして、感謝!感謝!です。
自信なしとなっておりましたが、記載どおりに貼り付けようとしたのですが、私には、貼り付けする方法がわからず、とにかく打ち込みました。
結果は、私の質問への回答に合致しておりました(^。^)
本当に有り難うございます。
早速、職場の歳入、歳出の日計資料に取り入れさせていただきます。
私も、もっと勉強しなくてはと・・・・
  まずは、御礼かたがた、失礼致します。

お礼日時:2002/03/14 09:41

 ご質問の詳細が解らず、希望どおりにというわけではないかもしれませんが、もしも前日の累計額を残す必要がなく、集計期間の累計額を表示したいというのであれば、下記の方法が考えられます。

前日累計額も表示したいのなら#1の方法が面倒が少ないかと思います。
1)A列に各日額を打ち込む→B1に累計額を出す場合、
 =sum(a:a)をB1セルに入れることで、A列に入れた日額の累計が出せます。
2)1ヶ月分、もしくは1年分の日金額を入れる表があり、それに12ヶ月分、もしくは数年分のシートがあって、それらの累計を表示したい場合
 例として1ヶ月ごとのシートがある場合で説明します。
 各シートとも、A列に日額を打ち込む
 =sum(sheet1:sheet12!a:a)とすれば、各シート(sheet1は指定した最初のシート、sheet12は指定した最後のシート)のA列の数値が全て合計されます。シート名は任意でかまいません。累計の式はどこにあっても計算されますが、別のシートに計算式を入れておくと、途中でシートを追加挿入しても大丈夫です。
3)日計を入力するファイルが日にちによって別の場合
 簡単な設定方法はわかりません。ごめんなさい
4)固定したセルに次々と日計を入力して、その累計を出したい場合
 一つのセルに次々と数値データを入力しても、excelは最後に入力した数値しか覚えていてくれないので、別表に自動的に金額が挿入されていって、累計額表示のセルは挿入された金額が載っている表を合計するように作る必要があります。エンターキーを押すと入力した金額が別表に次々コピーされるマクロを作成して、そこを参照するsum関数を用いれば可能ですが割愛させていただきます。
    • good
    • 2
この回答へのお礼

早速のご指導有り難うございます。
一通り、試してみましたが、私の質問説明の足りなさですみませんが、回答者No.3の方のが、今回作成している、歳入、歳出の資料に合致しておりましたので、そちらを参考にさせていただくことにいたしました。
貴重なご時間ありがとうございました。

お礼日時:2002/03/14 09:58

1行目が始まりとしますと、B1に「=A1」と入れて、


B2には「=B1+A2」と入れます、後はB2のセルを指定して、B2セルの右下の角にマウスを持っていくと+に変わりますので、その状態でクリックしたまま、B3以下へ+を下げてコピーしてやれば出来ます
    • good
    • 2
この回答へのお礼

早速ありがとう、ございます。
上手く質問が書けなくてすみませんでした。
作成したい、資料が横に1列づつの資料ですので、回答者No.3の方のを採用させていただきました。
貴重な、時間ありがとうございました。

お礼日時:2002/03/14 09:44

このQ&Aに関連する人気のQ&A

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

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

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

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

Qエクセルで、売り上げの日計と累計を自動計算する方法を教えてください。

エクセルを活用し、毎日の売り上げをシートごとに入力し、その累計は別のシートに自動的に計算する方法はありますか。以前「串刺し」という方法があると聞いたことがありますが、よくわからなかったので、あれば教えてください。

Aベストアンサー

#1さんの言われるとおりですが、丸秘テクニックを一つ
(1)累計のシートを1番目のシートにする
(2)毎日のシートの最初のシートと累計のシートの間に全く何もない空白のシートを挿入しシート名を"top"に変更する。
(3)毎日のシートの最後のシートの後に同様に空白のシートを追加し、シート名を"last"に変更する。
(4)累計シートの累計を計算するセルに"=sum(top:lsat!rc)"と入力する。
(5)この式を累計表の必要なセルにコピーする。

これで完成です。
この方法は毎日のシートを"top"と"last"のシートの間に追加するだけで集計が出来ます。毎日数式を変更する必要がありません。

Qエクセル 日計表から月計表に自動入力

エクセル2007です。自分の拙い知識ではできません。教えてください。

仕事で毎日様々な書類をとりまとめ、その件数を日計表に入力、印刷したらそれを表紙にして毎日決裁をとっています。
さらにその件数を月計表(月別リスト)に入力し直し、月ごとの集計を行っています。
つまり毎日、同じ数字を入力する作業を2回(日計表と月計表)行っているわけです。

そこで入力を1回で済ませたく、日計表の数字をそのまま月計表に反映させられないかと
思っています。

Sheet1に日計表、Sheet2以降が月計表となっており、4月・5月・6月・・・3月と1年分が続きます。
日計表と月計表は様式は全く異なっています。
月計表は先頭行が項目、1列目が日にちです。

理想は’日計表に入力したら、それが月計表のその日にちの欄に反映される’ことです。

・・・が、難しそうなので、逆パターンで、先に月計表に件数を入力、その数字を日計表に
取り込む方法でもいいかなと考えましたが、vlookupによる参照を考えましたが、
月計表が複数あるので月替わりに参照シートの指定をいちいちやり直すのか???
(自分だけが使うわけではないのでそれは困る)・・・など、いろいろとお手上げになってしまいました。

文章での説明だけで分かりづらくてスミマセン。
マクロは全然わかりませんので、関数だけでできれば・・・と思います。

エクセル2007です。自分の拙い知識ではできません。教えてください。

仕事で毎日様々な書類をとりまとめ、その件数を日計表に入力、印刷したらそれを表紙にして毎日決裁をとっています。
さらにその件数を月計表(月別リスト)に入力し直し、月ごとの集計を行っています。
つまり毎日、同じ数字を入力する作業を2回(日計表と月計表)行っているわけです。

そこで入力を1回で済ませたく、日計表の数字をそのまま月計表に反映させられないかと
思っています。

Sheet1に日計表、Sheet2以降が月計表となっており、...続きを読む

Aベストアンサー

日計表に入力することで月計表には自動的に表示させることが関数を使ってできます。
例えば次のようにすればよいでしょう。
シート1ではA2セルから下行に日付を入力していきます。B1セルからC1・・・と横の列には項目名を入力します。
毎日のデータは日付と項目にちなんだセルに入力します。
そこでシート2、シート3・・と月ごとのシートを作るわけですがシート2からシート13までを用意して、シート見出しのところでSheet2をクリックしたのちにShiftキーを押しながらシート見出しのSheet13をクリックします。この操作でシート2からシート13までが同じ作業グループとなります。
シート2が画面にあるわけですがそこでA1セルには4月用のシートですから2012年4月と入力します。数式バー上では2012/4/1と表示されますね。
そこで1日から30日までの日付をB1セルから横の列に表示させることにしますが、その操作は次のようにします。
B1セルには次の式を入力して右横方向にドラックコピーします。

=IF(MONTH($A$1+COLUMN(A1)-1)=MONTH($A$1),$A$1+COLUMN(A1)-1,"")

B1セルからAF1セルまでを範囲として選択して右クリックし「セルの書式設定」から「表示形式」のタブの「ユーザー定義」で種類の窓には d"日" と入力します。
これでA1セルの年月に応じた末日までが表示されます。
次にA2セルから下方にはシート1の1行目で使用していると同じ項目名を入力します。
B2セルには次の式を入力してAF2セルまでドラッグコピーしたのちに下方にもドラッグコピーします。

=IF(OR($A2="",COUNTIF(Sheet1!$A:$A,B$1)=0,COUNTIF(Sheet1!$1:$1,$A2)=0),"",INDEX(Sheet1!$A:$J,MATCH(B$1,Sheet1!$A:$A,0),MATCH($A2,Sheet1!$1:$1,0)))

これでA1セルに入力された2012年4月に関連するデータがシート1から転記されることになります。
最後にシート1の画面に戻ります。これによってシート2からシート13までの作業グループが解消されます。
次にシート3ではA1セルに2012年5月と入力すれば関連するデータがシート1から転記されます。以下同様に各シートのA1セルに年月を入力すればよいでしょう。
シート1に入力される日付に応じて関連するシートに自動的にデータが転記されます。
なおシート見出しはSheet2を4月のように変更しても何らの問題もありません。各シートのA1セルの年月だけがシートのデータに関係していますので。

日計表に入力することで月計表には自動的に表示させることが関数を使ってできます。
例えば次のようにすればよいでしょう。
シート1ではA2セルから下行に日付を入力していきます。B1セルからC1・・・と横の列には項目名を入力します。
毎日のデータは日付と項目にちなんだセルに入力します。
そこでシート2、シート3・・と月ごとのシートを作るわけですがシート2からシート13までを用意して、シート見出しのところでSheet2をクリックしたのちにShiftキーを押しながらシート見出しのSheet13をクリックします。この...続きを読む

QEXCELで複数のシートの日々の累計

初めて投稿いたします。
とても困っているので、どうぞ宜しく御願いします。

エクセル2000で、1つのBOOKに一ヶ月分の日報のシートを作成しました。
各シート名は、6月1日、6月2日、6月3日~6月30日となっています。

例えば、
この6月2日のシートのC1に6月2日の売り上げを手入力すると、このシートの
E1に前日(6月1日)の売り上げ(6月1日シートのC1)+今日(6月2日)の売り上げ
=累計が計算されるようにしたいのです。

月によって、営業日数が違うので、もう一枚シートを作成して、そのシートのA列に
営業日数分のシート名(6月1日、6月2日・・・)を縦に羅列し、それを読んでその名前のシートの売り上げ(C1)を読んで、当日の売り上げと累計していきたいのです。

初日は、当日の売り上げが累計値となり、
2日目は、1日目+2日目の値
3日目は、1日目+2日目+3日目の値となるようにしたいのです。

似たような質問をされているのを探して、いろいろと試してみましたが、
関数もVLOOKUPやIF等の簡単なものした使用したことがなく、うまくいかないのです。

どうか、詳しく教えていただけると、助かります。
宜しく御願いします。

初めて投稿いたします。
とても困っているので、どうぞ宜しく御願いします。

エクセル2000で、1つのBOOKに一ヶ月分の日報のシートを作成しました。
各シート名は、6月1日、6月2日、6月3日~6月30日となっています。

例えば、
この6月2日のシートのC1に6月2日の売り上げを手入力すると、このシートの
E1に前日(6月1日)の売り上げ(6月1日シートのC1)+今日(6月2日)の売り上げ
=累計が計算されるようにしたいのです。

月によって、営業日数が違うので、もう一枚シートを作成して、そのシートのA列に
営業日...続きを読む

Aベストアンサー

要は前日のシートのE1セルの値+当日シートのC1の値を出せばいいんですよね?

各シートにシート名以外に日付入っていますか?
入っていれば、1日以外のシートのE1セルに↓の式をいれます(例としてA1に日付が入っているとしました)。
=INDIRECT(TEXT(A1-1,"m月d日")&"!E1")+C1

どこにも日付が入っていないとシート名から日付を取るので以下の様に長ったらしくなります。
=INDIRECT(TEXT(DATEVALUE(RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1))))-1,"m月d日")&"!E1")+C1

#6月1日シートのE1セルには、=C1 と、入っている事が前提です。

QExcelで毎日の売上を入力すると同時に別のSheetに累計が…

初心者です。Excel2000を使っています。
Sheet1に毎日の商品別・社員別の売上金を入力しています。
表の列に商品別項目(80品目くらいあります)を、行に社員名(15人ほど)なので結構大きな表です。
どの社員がどの商品をどのくらい売ったか…を社長が毎日チェックします。
1週間の累計が欲しいのでSheetを7枚コピーし、日々Sheet毎に入力し、Sheet8で串刺し集計をして、累計をとっていました。
表が大きいので毎日の入力Sheetは1枚にして、累計のSheetに
昨日の売上+今日の売上=今日現在の累計
といったように、入力Sheetの数値が累計のSheetに反映されるような数式設定は簡単にできますか?
日々の売上表と累計の売上表を同時に素早く、社長に提示できるようお達しがありました。
そして月末には当然1ヵ月分を出します。お願いします。

Aベストアンサー

1枚のシートに入力すべてのデータを入力して、別シートにピボットテーブルで集計するのが一番よいでしょう。ピボットテーブルであれば、どのような形態の集計もでき、また何種類でも作れるのでとても便利です。

データメニューからピボットテーブル...を選び、さらにEXCELりスト...を選んでデータが入力してあるシートのデータの領域を指定すれば、設定ができます。あとは、レイアウトで作りたい表の形式を指定すれば、完了です。一度試してみてください。

Qエクセルで前シートを参照して累計金額をだしたい。

エクセルで現場ごとに日報を作成しています。
(現場単位で、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?」と表示されてしまい
また名前の定義を設定し直さなければなりません。

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

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


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

よろしくお願いします。

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

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

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

色々と調べて以下の方法にたどり着きました。
名前の定義に「前シート」として、参照範囲に
「=MID(I...続きを読む

Aベストアンサー

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関数を配置します。
ほかにも金額などは 月集計ができたりグラフにできたり便利になるはずです。

No2です。
>簡単に、関数で一つ前のシートのセルを参照する方法が知りたいです。
ひとつ前のシートを参照する関数はありませんが Cell関数を紹介します。
仮に
現在のシート名が 1113 となっていて 前のシート名が 1112 となっているとします。
1113のA1セルに =CELL("filename",A1) と入れてみてください。
そのファイルのパス、ブック名、シート名 が表示されます。
A2セルに =MID(A1,FIND("]",A1)+1,4) と入れるとシート名(この例では 1113)が表示されます。
A3セルに =TEXT(DATE(2010,LEFT(A2,2)...続きを読む

Qエクセルで打ち込んだ数字を自動で別シートに表示したい

エクセルでセルに打ち込んだ数字を自動で別シートに表示できる方法があれば、教えてください。

例えば、シート1のC1に5を打ち込んだら、シート2のD2にシート1で打ち込んだ5が自動で表示される。

また1列すべてを自動で表示させる場合、一つのセルの時と違いがありましたら教えてください。よろしくお願いします。

Aベストアンサー

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コピー&リンク貼り付けを使うと便利です。

例)例)シート1のC1~C5に何かを入力したら、
  シート2のD2~D7にシート1で打ち込んだものが自動で表示される

  シート1にあるコピー元のセルを範囲選択して、
  シート2のD2の上で「右クリック」⇒「形式を選択して貼り付け」
  をクリックします。

  そして出てきた小さな画面の左下にある「リンク貼り付け」という
  ボタンをクリックすると完成です。
  試してみてください。。

  念のためにリンク貼り付けを図解しているURLを載せておきます。
  参考にしてみてくださいね。。
  http://www.geocities.jp/office_inoue/excel/eq21.htm

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コ...続きを読む

Qexcelで日計表と月計表を作りたい

excelで日計表と月計表を作りました。
同じファイル内に1枚が月計表、残り31枚が日計表です。
日計表に値を入力すると月計表に反映するようにしたのですが、一部が上手くいきません。
皆さんのお知恵をお貸し下さい…。

具体的に言うと、

●結果がAだったものの件数
●結果がBだったものの件数
●その合計

以上を日計表に記入し、
月計表で集計したいのです。

ポイントは、
○月計表で、未来の日付の欄は空欄にし、
月末に出す平均値に反映させたくない
(つまり、今日が20日だとすると20日までの
平均値が行末に出るようにしたい)
ということです。

文章で説明すると分かりにくいですが、宜しくお願いします。

Aベストアンサー

1日から31日のシートのA1に平均を出したい数値が入っていると仮定した場合

=sum('1日:31日'!A1)/COUNT('1日:31日'!A1)

QExcelで日別に入力されたデータを月別に集計するにはどうしたらいいのでしょうか。

Excelで月別の集計をしたいのですが
例えば
  日付    数量
10月25日  200
10月27日  150
10月30日  120
11月 1日  200
11月 3日  150
のように、日付が飛び飛びで連続していなくい日々の数量を、上の行から順番に入力していった場合に(月が替わる行が決まっていない)月別の集計を取る方法はないでしょうか。


 

Aベストアンサー

どのように集計する月を指定するのかが書かれていませんが、例えば11月分の合計を出したいなら

1)11月までの合計から10月までの合計を引く方法
 =SUMIF(A:A,"<=11/30",B:B)-SUMIF(A:A,"<=10/31",B:B)

2)月が「11」のB列を合計する方法
 =SUMPRODUCT((MONTH(A2:A100)=11)*(B2:B100))

なども考えられます。

でもエクセルなら一番オーソドックスな方法はピボットテーブルでしょう。C列に
 =TEXT(A1,"YYYY/MM")
で「2008/11」のような文字列を生成しておいてピボットテーブルで集計すれば、シート上にある全ての月の合計が一発で求められます。
ピボットテーブルの使い方はGoogleなどで検索したらたくさん見つかります
http://www.viplt.ne.jp/tomy/pibot.html

Qエクセル 累計を算出する関数

いつもお世話になっております。

下記のようなデータがあり、毎月累計を算出します。
手作業で計算範囲を変更するのではなく、関数でだせないでしょうか?

  A B C D E F G
1 6月
2 4月 5月 6月 7月 ・・・・・・・3月
3 100 150 90  0 ・・・・・・・
4
5 累計 340

A1に月を入れます。
B5に4月からA1の月(今回は6月)までの累計を出します。
今はB5の計算式を毎月変更しています。
データが4つあり、4つ位たいした手間ではないのですが、月を入れる
だけで簡単に出来たらいいなと思っています。

どなたか教えて下さい。よろしくお願いします。

Aベストアンサー

=SUM(OFFSET($A$3,,,,MATCH($A$1,$2:$2,FALSE)))

でいかがでしょうか。

Qエクセルの営業日報で累計を残す方法

エクセル初心者です。
エクセルで一か月分の営業日報をつくりました。
当日売上と当月累計等が横並びになっていてるものです。
シートを1枚作り、1日を31日までコピーし、1,2,3,4~31となっています。
完成した日報の累計は串刺し算でもとめています。
  例:売上累計は=SUM(Start:End!A1)

この計算だと、たとえば15日まで記入した場合、10日の売上累計を確認したくても
1~31すべての累計が同じ数字になっていて見返すことができません。

毎日の累計を残したい場合はどのような対策が有効でしょうか??

※マクロも少し(シートを「1」作り、シート名「1」~「31」でコピー)だけですが挑戦しました(汗)

Aベストアンサー

 回答No. 3で触れた、1~31シート上のG30セルの値やG31の値を、一々、1枚のシート上に抽出せずとも済む方法です。
 尚、

>作業列としてStartシートのC列のみを使用し、StartシートのD列~E列は使用しないで

と述べましたが、実際に試してみました処、作業列を2列使用した方が良い事が判りましたので、EndシートのA列~B列を作業列として使用する事に致しました。

 まず、Endシートの

A2セルに   Start
A3セルに   '1
A4セルに   '2
A5セルに   '3
A6セルに   '4
A7セルに   '5
A8セルに   '6
A9セルに   '7
A10セルに   '8
A11セルに   '9
A12セルに   '10
A13セルに   '11
A14セルに   '12
A15セルに   '13
A16セルに   '14
A17セルに   '15
A18セルに   '16
A19セルに   '17
A20セルに   '18
A21セルに   '19
A22セルに   '20
A23セルに   '21
A24セルに   '22
A25セルに   '23
A26セルに   '24
A27セルに   '25
A28セルに   '26
A29セルに   '27
A30セルに   '28
A31セルに   '29
A32セルに   '30
A33セルに   '31

という具合に、Start~31シートのシート名を、シートが並んでいる順番通りに入力して下さい。(「'」を忘れずに付けて下さい。尚、Startシートのシート名に関しては「'」が付いていても居なくとも、どちらでも構いません)
 尚、この場合、「'」は表示には現れませんので、例えばEndシートのA3セルの場合、データ自体は「'1」ですが、表示上は「1」と表示されます。

 次に、EndシートのB2セルに次の関数を入力して下さい。

=IF(ISERROR(INDIRECT("'"&$A2&"'!A1")),"",COUNT(B$1:B1)+1)

 次に、EndシートのB2セルをコピーして、EndシートのB3~B33の範囲に貼り付けて下さい。(EndシートのB2セルを選択してから、選択範囲を示す黒い太枠の右下の隅にある黒点をダブルクリックする事でもB3~B33の範囲に複写する事が出来ます)

 次に、1のシートを選択してから、Shiftキーを押しながら31のシートのシートタブをクリックする事で、1~31のシートがまとめて選択されている状態とし、その状態のままで「G30セルの値の毎日の累計を表示させるセル」を選択し、そこに次の関数を入力して下さい。

=IF(COUNTIF(End!$A:$A,REPLACE(CELL("filename",$A$1),1,FIND("]",CELL("filename",$A$1),FIND(".xls",CELL("filename",$A$1))),)),INDIRECT("'"&LOOKUP(VLOOKUP(REPLACE(CELL("filename",$A$1),1,FIND("]",CELL("filename",$A$1),FIND(".xls",CELL("filename",$A$1))),),End!$A:$B,2,FALSE)-1,End!$B$1:$B$33,End!$A$1:$A$33)&"'!RC",FALSE)+IF(ISNUMBER(G30),G30,0),"")

 次に、同じく1~31のシートをまとめて選択している状態のままで、「G31セルの値の毎日の累計を表示させるセル」を選択し、そこに次の関数を入力して下さい。

=IF(COUNTIF(End!$A:$A,REPLACE(CELL("filename",$A$1),1,FIND("]",CELL("filename",$A$1),FIND(".xls",CELL("filename",$A$1))),)),INDIRECT("'"&LOOKUP(VLOOKUP(REPLACE(CELL("filename",$A$1),1,FIND("]",CELL("filename",$A$1),FIND(".xls",CELL("filename",$A$1))),),End!$A:$B,2,FALSE)-1,End!$B$1:$B$33,End!$A$1:$A$33)&"'!RC",FALSE)+IF(ISNUMBER(G31),G31,0),"")

 因みに、「G30セルの値の毎日の累計を表示させるセル」に入力する関数と「G30セルの値の毎日の累計を表示させるセル」に入力する関数の違いは、「CELL("address",」の次に来る参照先のセル番号が、G30であるのかG31であるのかの違いだけです。(ですから、もし、「G30セルの値の毎日の累計を表示させるセル」と「G30セルの値の毎日の累計を表示させるセル」が、同じ列の中で連続して並んでいる場合には、「G30セルの値の毎日の累計を表示させるセル」をオートフィル等を用いてコピーする事でも、「G31セルの値の毎日の累計を表示させるセル」の関数を入力する事が可能です)

 次に、StartシートやEndシート等の、「1~31以外の適当なシート」を開く事で、「1~31のシートがまとめて選択されている状態」を解除して下さい。


 これで、1~31の各シートに毎日の累計が表示される様になりますし、関数の中のG30やG31の部分を他のセル番号に替えた関数を、1~31の各シートに設定するだけで、他のセルに入力されている数値の累計を表示させる事も出来ます。

 但し、この方法では、G30セルやG31セルが未入力となっているシートにおいても、累計値が表示されてしまいます。
 ですから、見栄えを良くするために、条件付き書式を設定する事で、G30セルやG31セルが未入力となっているシートの「毎日の累計を表示させるセル」が非表示になる様にされると良いかも知れません。(もし、G30セルやG31セルが未入力となっているシートの見栄えを気にせずとも良い場合には、設定する必要は御座いません)
 その条件付き書式の設定方法に関しては、また後で投稿させて頂きます。

 回答No. 3で触れた、1~31シート上のG30セルの値やG31の値を、一々、1枚のシート上に抽出せずとも済む方法です。
 尚、

>作業列としてStartシートのC列のみを使用し、StartシートのD列~E列は使用しないで

と述べましたが、実際に試してみました処、作業列を2列使用した方が良い事が判りましたので、EndシートのA列~B列を作業列として使用する事に致しました。

 まず、Endシートの

A2セルに   Start
A3セルに   '1
A4セルに   '2
A5セルに   '3
A6セルに   '4
A7セルに   '5
A8セルに...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング