• ベストアンサー

エクセル2003の過去データの取得方法

職場で、成績表を作成しています。 毎日その日のデータを入力し、週間合計、月間合計、年間合計を算出してますが、このファイルは月ごとにデータを入れ替えているので、過去の月間合計データが残っていません。 現在は、月締めに年間合計シートにその月のデータを貼り付けています。 この貼り付け処理を関数やマクロを使い、自動にするベストな方法をご教授ください。 例 シート1(1週から6週のシートがあります) *毎月入れ替えています 3/1 3/2 3/3 3/4 3/5 3/6 週合計 aさん 1 2 3 4 5 6 21 bさん 1 2 3 4 5 6 21 シート7(月間) 今日の日 月間合計 aさん 1 21 bさん 1 21 シート8(年間)*このシートに毎月データを入れたい 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 aさん bさん *日々データが大量にあるため、日々データを残すとシート数が増えてしまう。 *カレンダーを作成し、月が変わった時の日付も関数で自動入力にした。 *今日の日も検索関数を使用し、自動入力にした。 *慣れない人が使用するため、汎用性をもちできるだけ自動化したい。 年間合計で行き詰ってしまいました。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

はい,先のご質問のように何の制約もなく「ベストな方策」を問われれば,「これがベストです」という回答が寄せられます。 既にここまで作り込んである,「あとここをこうしたい」と詳しくご相談を書いてみると,それならこうしてみましょうといった具体的なアドバイスも寄せられやすくなりますね。 #先のご相談投稿は「解決」で閉じる操作を行い,マルチポストを解消しておいてください。 さてさて。 今回は詳細が寄せられましたので,煎じ詰めると 1.シート7の月合計欄の値を取り出し 2.シート8の目的とする列を調べて 3.そこに値で記入する という動作をさくっとマクロに行わせたい,というご質問になります。 #余談としては,たとえば締め日の翌日以降に最初にブックを開くと  自動で年履歴シートに転記を行い,更にシート1~7をクリアして,  今月の仕事始めに備える  といった具合にアイデア次第で「どんな事でもできます」。  まぁ,そういったアドバンスはまた次の機会にでも。 準備: モノゴトを簡単にするため,シート7の「B1セル」に,今一体「何月」のデータを集積中なのか「1月2月3月…と表示を出させてみましょう」。 その際に重要なのは,B1に計算で表示する言葉は「シート8の年間履歴表の横項目として書いてある1月2月3月…の表記と完全に同じ言葉に一致」させておきます。 また,うっかり翌月に持ち越してしまっても「今何月です」の表示が「勝手に変わってしまう」のを避けるため,「TODAY()関数などで自動計算はさせない」ことにします。 その他準備: シート7の(転記したい)月間集計欄は,仮に「シート7のD3:D12」のセル範囲だとする シート8に持って行きたい先の年間履歴表は,仮に「シート8のC3からN12」のセル範囲にあって当月の該当する列だとする その他準備: シート8のC2からN2セルに「1月,2月,3月…」の表記があるとする シート7のB1セルに,データメニューの入力規則でリストを選び,下の空欄に =INDIRECT("Sheet8!C2:N2") と設定する B1セルのプルダウンで,いま何月を入れているのか選んで使う。 サンプルマクロ sub Macro1() dim r1 if worksheets("Sheet7").Range("B1") = "" then msgbox "月が選ばれていません" exit sub end if r1 = application.match(worksheets("Sheet7").range("B1"), worksheets("Sheet8").range("C2:N2"), 0) if application.count(worksheets("Sheet8").range("B3:B12").offset(0, r1)) <> 0 then msgbox "選ばれている月のデータは記入済みです" exit sub end if worksheets("Sheet8").range("B3:B12").offset(0, r1).value = worksheets("Sheet7").range("D3:D12").value end sub 以上です。

emiko_msg
質問者

お礼

ご丁寧なアドバイス本当にありがとうございました。 今回は、シート内に毎月のデータを残す方法で 作成する事になりましたので、関数で対応していきます。 マクロ使用もこれから増えていくので、 上記内容もこれからの参考にさせて頂きます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.2

私は過去に似たような経験を得て関数を組んだことがあるのですが 処理速度が我慢の限界を超えましたので 一連の作業を裏座技など御含めてマクロに登録させて使っていたのですが それでも処理終了に2時間ほど掛かっていました アクセスの導入を検討されるか 最低でも1ブック内にもっと多くのシート もっと多くのデータを排するように 変えられた方が得策だと思います Excelはブック内参照はそこそこの速度で行いますが それに比べれて相対的にブック間参照は途轍もなく遅くなりますのでね この投稿がお役に立てば幸いです

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルの過去データの取得方法

    職場で、成績表を作成しています。 毎日その日のデータを入力し、週間合計、月間合計、年間合計を算出してますが、このファイルは月ごとにデータを入れ替えているので、過去の月間合計データが残っていません。 現在は、月締めに月間合計シートにその月のデータを貼り付けています。 この貼り付け処理を関数やマクロを使い、自動にするベストな方法をご教授ください。

  • 成績管理表の作成方法

    先日から質問させて頂いています。 作成の方向性が決まりましたので、関数のご教授願います。 職場で成績管理表を作成しています。 エクセル2003です。 下記表に数式を入れたいのですが・・・ チャレンジしましたが、うまくいきません。 年間成績表 *年を表示したら、1年分の日付を自動にしたい。(カレンダー) *このシートに1年分の成績データを入力する事で、  以下の表を自動計算させたい。 *(1)(2)(3)の様に項目別で例1例2の様にグループ別の表です。 2010年 例1 aさん bさん 例2 aさん bさん 4月1日(1)    (2)    (3) 4月1日(1)    (2)    (3) 4月1日(1)    (2)    (3) 省略 3月31日(1)     (2)     (3) 週間シート(日~土の今週を表示) 例2 3月14日   3月15日  省略 3月20日  週間合計    (1) (2) (3) (1) (2) (3)   (1) (2) (3) (1) (2) (3) aさん bさん 例2 3月14日   3月15日  省略 3月20日  週間合計    (1) (2) (3) (1) (2) (3)   (1) (2) (3) (1) (2) (3) aさん bさん 月間シート 例1 3月18日(今日の日) 月間合計  年間合計    (1) (2) (3)     (1) (2) (3) (1) (2) (3) aさん bさん 例2 3月18日       月間合計 年間合計    (1) (2) (3)     (1) (2) (3) (1) (2) (3) aさん bさん 月間シート 例1 4月    5月 省略 3月    年間合計 (1) (2) (3) (1) (2) (3)   (1) (2) (3) (1) (2) (3) aさん bさん 例1 4月    5月 省略 3月    年間合計 (1) (2) (3) (1) (2) (3)   (1) (2) (3) (1) (2) (3) aさん bさん

  • エクセルで・・・

    こんばんは。 質問をうまく伝えられないので,例で書かせてください。すみません。 例えば毎月1日~31日まで毎日1個ずつ何らかの数字を入力し(A1~A31) B1とA2の合計(=前日までの合計と今日の数値)を(B1~B31)に表示し,最後のB31の数値をB32に表示します。 この場合,B32に「=B31」にすれば表示されますよね。 では,このシートを毎月使用するとしますと, 30日や28日で終わる月が出てきます。 そうするとこの月はB31が空欄になるのでB32には何も表示されません。 B32に,常に最後の数値 (30日の月はB30,28日の場合はB28)が表示されるような関数などがありませんでしょうか。 if関数を使うと,この例の場合ならできますが 仮に入力項目が5件の月もあれば25件の月もある・・・のような場合 地道にif関数を使って作るのは面倒です。 何か良い方法がありませんでしょうか。 どうぞよろしくお願いいたします。

  • Excelの関数を教えてください

    初めまして。よろしくお願いします。 関数を使って、以下のようなデータを作成することができれば、 その関数を教えてください。 Sheet1には次のように入力されています   A       B 1 日付      金額 2 2010/1/1 500 3 2010/2/5  300 4 2010/1/23 10000 5 2010/2/1  200 ・ ・ ・ A列に日付、B列に金額が入力されていて、行は決まっていません。 これをSheet2に集計したいのですが、B2~B13に関数を使ってできますか? Sheet2   A     B 1 月    金額 2 1月 3 2月 4 3月 ・ ・ ・ 13 12月 14 合計 Excelがわからなくてこまっています。詳しい方、ぜひ教えてください。 よろしくお願いします。

  • VBAで期間を指定し該当する期間のデータを合計する方法を教えてください。

    お世話になっております。とても困っています。 皆さんよろしくお願いします。 1月、2月、3月・・・12月というシート名で以下のようなデータが入っているとします。 ”1月”のシートの場合 月 日 人 (1)データ (2)データ 1 1  A  10  100 1 2  A  20  150 1 9  A  15  100 1 1  B  10  200 1 5  B  10  100 ・ ・  ・   ・   ・ ・ ・  ・   ・   ・ このようなデータが1月~12月まで存在します。 このデータから、別のシート(”入力”というシート)で入力した期間に該当する日付のシートから、(1)のデータの合計値と(2)のデータの合計値を”結果”というシートに計算されるという方法を知りたいです。 是非、よろしくお願いします。 ”入力”というシート    月  日     月  日 期間 1  1  ~  2  5 ”結果”というシート   (1)計  (2)計 A 50  550 B 35  600

  • excelで売上日報を作りたい

    飲食店です。excelでSheet1に1日の売上や仕入を入力し、Sheet2に月の売上や仕入の一覧が出るようにしたいと思ってます。加えて、Sheet1は毎日上書きしても、それがちゃんとSheet2に反映されるようにしたいです。 Sheet1のA1に日付→Sheet2のA1に反映。Sheet1のB2に仕入合計→Sheet2のB2に反映。ここで保存。 翌日、Sheet1のA1に日付を入力したら、Sheet2のA2に自動入力、Sheet1のB2に仕入合計→Sheet2のB3に自動入力。上書き保存。 というようなことです。 Sheetを31日分作るということではなく、Sheet1とSheet2のみで作成したいと思ってます。 関数のみでの作成が不可能でしたら、マクロを使っての作成でも構いません。 説明が下手で申し訳ありませんが、宜しくお願い致します。

  • EXCEL シート間でのデータ参照

    例えば同じファイル内のSheet1に    A  B ←行 1  2  3 ↑ 列  のデータがあってSheet2にSheet1のデータを参照した関数を。何でもいいんですが例えば    A   1 合計 ←タイトル 2  5 Sheet1のデータの合計数をSheet2のA2に表示させるようなことって可能でしょうか? 同一のデータをシート単位で異なる関数を使って加工出来ればと思い投稿しました。よろしくお願いします。

  • エクセルの横データを自動的に縦データに表したいです

    エクセルで以下のような入力をしたいと思っていますが、いい方法が見つからず困っています。「形式を選択して貼り付け」では上手くいきません。 (sheet1)    A     B     C     D 1   100   300   200   500 2 3      ↓ (sheet2)   A      B    C    D 1      100    2      300    3       200 4       500    と言う感じにsheet1で入力したデータを自動的にsheet2に入力できるようにしたいと思っています(sheet2の数値はB列に入っていると見てください)どうすれば良いでしょうか?何か関数を利用してこういうことはできるのでしょうか?よろしくお願いします

  • エクセル関数で質問です

    こんにちは。いつもお世話になっております。 エクセルの関数で質問があります。 毎月の集計表を作っており、シート名が1~31、 ●月合計・●月合計2 とあります。 ●月合計のシートには日付が縦に入っており、 A4 ●月1日 A5 ●月2日・・・というように 続いております。 B4のセルには、 1のシートの数値、 B5のセルには  2のシートの数値・・・というように、 各シートのデータを参照したいと思っていますが、 下へオートフィルで数式をコピーして参照できるように するにはどうしたらいいでしょうか? ROW関数などを使ってみたのですが、どうもうまくいかず 困っています。 一列だけでなく、複数列あるため、手作業で一つ一つ 参照するのは、非常に困難なため、お知恵を拝借できれば幸いです。 よろしくお願いいたします。 

  • Excel 一つのシートに複数データをまとめる方法

    エクセルの関数を使用し、複数シートの特定の複数セルを一枚のシートに順に書き出すことは出来るのでしょうか? シートはすべて同じ書式で入力されており値だけが異なります。どういった状況かというと、 一つのブックの中に4月1日から9月30日までのデータが一日1シートごと、合計で183シートあります。 それぞれのシートに1日の中でそれぞれ4項目何時間あったかをまとめたデータがあるので同じブックで新たな別のシートに183日分のデータのまとめを表示されるようにしたいのですがどうすればいいでしょうか?(画像参照) マクロや関数に関する知識はなく、関数はSUNやAVERAGEくらいしか使ったことがありません。 似たような質問を調べてみたのですが調べ方が悪いのかなかなか理解には及びませんでした。 もし参考になるサイトや質問等も教えていただけると助かります。

専門家に質問してみよう