エクセルで月によって参照するシートを自動的に変える関数

このQ&Aのポイント
  • エクセル2003を使っています。1月~12月の各月のシートと、集計用のシート、合計13のシートを用意してあります。自動的に月によって参照するシートを変える関数、もしくは方法があれば教えてください。
  • エクセル2003を使っています。1月~12月の各月のシートと集計用のシート、合計13のシートを用意してあります。集計用のシートで1カ月前から12カ月前までのデータを自動的に表示したいです。自動的に月によって参照するシートを変える方法があれば教えてください。
  • エクセル2003を使っています。1月~12月の各月のシートと集計用のシート、合計13のシートを用意してあります。集計用のシートで1カ月前から12カ月前までのデータを自動的に表示させたいです。具体的には、5月には4月のデータを参照し、6月には5月のデータを参照したいです。自動的に月によって参照するシートを変える関数があれば教えてください。
回答を見る
  • ベストアンサー

エクセルで、月によって参照するシートを自動的に変える関数

エクセルで、月によって参照するシートを自動的に変える関数 エクセル2003を使っています。 1月~12月の各月のシートと、集計用のシート、合計13のシートを用意してあります。 1月~12月のシートには、それぞれその月のデータが入っています。 これらのシートはローテーションで使用します。 (”6月”シートに2009年6月のデータが入っているとして、 2010年6月にはこのシートの2009年6月分のデータを一旦消して 新たに2010年6月分のデータを入れる。) これに対して、集計用のシートでデータを自動表示したいのですが、 1カ月前~12カ月前といった表示をさせたいのです。 つまり、1カ月前を表示させるセルは、5月には4月の、6月には5月のシートを参照させたい。 2010年6月には1カ月前に入っていた5月のデータは、2010年7月には2カ月前に表示させたいです。 自動的にこのような表示のさせる関数、もしくは方法があれば教えて下さい。

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

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

添付図: F4 =SUMIF(INDIRECT(MONTH(DATE(2000,MONTH(TODAY())-COLUMN(A4),1))&"月!e:e"),$C4,INDIRECT(MONTH(DATE(2000,MONTH(TODAY())-COLUMN(A4),1))&"月!g:g")) 下にコピー,右にコピー

その他の回答 (3)

  • mo2yakko
  • ベストアンサー率54% (30/55)
回答No.3

No2です。 シート名の計算式を下記に変更してください.orz =TEXT(DATE(YEAR($A$1),MONTH($A$1)-1,1),"M") & "月" '1ヶ月前の年月 =TEXT(DATE(YEAR($A$1),MONTH($A$1)-2,1),"M") & "月" '2ヶ月前の年月 あと$A$1をNOW()に置き換えてもいいです。

rutohamuni
質問者

お礼

大変すいません。 シートの参照ができれば、後は自分でできると思ったのですが、解決しませんでした。 大変失礼なのですが、追加質問させて頂きます。 集計用シートのC列に名前が入っており、 また各月のシートのE列に名前、G列に数値が入っています。 集計用シートのF列~Q列に、1カ月前~12カ月前の集計表示をさせたいのですが、 集計用シートの名前と同じ名前を、各月のシートから検索し、その数値の合計を表示させたいです。 例) 今月が6月だとして、集計用シートのC4=Aさんの場合、 5月のシートを参照し、E列に"Aさん"と入力されている行(複数ある場合あり)のG列に入っている数値の合計を、集計用シートのF4セル(1カ月前のデータを表示するセル)に表示させたいです。 同じように、4月のシートを参照し、同じ名前の合計数値をG4セル(2カ月前のデータを表示するセル)に表示するといった具合です。 また、集計用シートはC5,C6・・・と続きます。 申し訳ありませんが、解決方法を御伝授頂けないでしょうか。

  • mo2yakko
  • ベストアンサー率54% (30/55)
回答No.2

シート名を年月にすれば、INDIRECTを使用すれば可能ではないでしょうか? ぱっと思いついただけなので他に良い方法があるかもしれません。 '今現在の年月 A1 =now() ※ファイルを開いたり、シートを更新する度に日付が変わってしまいます。 'シート名(年月) A3 =TEXT(DATE(YEAR($A$1),MONTH($A$1)-1,1),"YYYYMM") '1ヶ月前の年月 A4 =TEXT(DATE(YEAR($A$1),MONTH($A$1)-2,1),"YYYYMM") '2ヶ月前の年月 : : A14 =TEXT(DATE(YEAR($A$1),MONTH($A$1)-12,1),"YYYYMM") '2ヶ月前の年月 '年月シートのA列の合計 B3 =IF(ISERROR(INDIRECT(A3&"!"&"A1")),"",SUM(INDIRECT($A3&"!"&"A:A"))) B4 =IF(ISERROR(INDIRECT(A4&"!"&"A1")),"",SUM(INDIRECT($A4&"!"&"A:A"))) : (コピペでいいかも)

回答No.1

分析ツールをインストールしてあれば、edate関数が使えます。 これはedate(日付, 月)で日付から月数後の日付を返すので、たとえ ばmonth(edate(today(),-1))とすれば先月が何月だったか判るわけ ですね。そうすると6月である今「5月」シートのG13を参照するには =indirect(month(edate(today(),-1))&"月!G13") の様になりますね。

rutohamuni
質問者

お礼

大変すいません。 シートの参照ができれば、後は自分でできると思ったのですが、解決しませんでした。 大変失礼なのですが、追加質問させて頂きます。 集計用シートのC列に名前が入っており、 また各月のシートのE列に名前、G列に数値が入っています。 集計用シートのF列~Q列に、1カ月前~12カ月前の集計表示をさせたいのですが、 集計用シートの名前と同じ名前を、各月のシートから検索し、その数値の合計を表示させたいです。 例) 今月が6月だとして、集計用シートのC4=Aさんの場合、 5月のシートを参照し、E列に"Aさん"と入力されている行(複数ある場合あり)のG列に入っている数値の合計を、集計用シートのF4セル(1カ月前のデータを表示するセル)に表示させたいです。 同じように、4月のシートを参照し、同じ名前の合計数値をG4セル(2カ月前のデータを表示するセル)に表示するといった具合です。 また、集計用シートはC5,C6・・・と続きます。 申し訳ありませんが、解決方法を御伝授頂けないでしょうか。

関連するQ&A

  • エクセルの累計関数

    わかる方ぜひ教えてください。 仕事で一年の集計をエクセルでしています。 一月の集計を1SHEETごとに入力できるようにしてあり、12ヶ月分(12SHEET)作ってあります。 その累計を、各月のシートで見たいのです。 例えば、5月のシートには1月から4月までの累計と5月分のものを足した累計を出したいのです。 関数はどのように入力すればいいのでしょうか? ひと月ごとに関数式を入力しないとだめでしょうか? よろしくお願いします。

  • エクセル シート名を参照する関数は?

    エクセルで、売上を管理しているファイルがあります。 4~3月までの各月ごとのシートに、取引先ごとの売上額・仕入額・原価率・担当者名etcが1行ずつ入力されてあります。 そして、担当者別シートで担当者ごとの取引先データをLOOKUP関数やINDEX関数を使って抽出・合計し、グラフ化して管理しています。 ↓こんな状態です。(合計額の表)    A   B  C  D  E F G 4月 50000 40000 80% ・・・・・ 5月 6月 今の状態では、5月になればA~Gまでの4月の列をコピペして LOOOKUP関数等で参照しているシート名「4月」を「5月」にひとつずつ入力しなおしています。 これが結構面倒なので、 セルに「5月」と入力したら、5月のシートを参照しにいく、 セルに「6月」と入力したら、6月のシートを参照しにいく・・・ というように作り直したいのですが、 このような、シート名を参照する関数はあるのでしょうか?

  • エクセルの関数について

    エクセルで月の集計をしたく、 関数を使って、簡単にまとめたいと思っています。 添付のように集計したいのですが、関数をご教授いただけませんか? sheet1(7月分のデータ)とsheet2(8月分のデータ)があります。 sheet3に7月と8月の集計をしたいです。 ※今後、9月、10月と増えていき、品目も増えると思います。 よろしくお願いいたします。

  • EXCEL 異なるシート間の参照

    EXCELに関しての質問です。 超初心者で基本がわからないままの質問ですみません。 同じブック内の複数のシート(様式は異なります)間の作業です。 片方のシートの日毎のデータを別のシートの日毎のセル に参照し、反映させたい。 INDIRECT関数を用いて、=INDIECT(A3&"!V3")のようにして A3に表示される文字列のシートのセル番地V3を参照し、 他のシートにそのデータを表示したいのですが、 うまくいきません。 A3セルには一ヶ月の日付が入っているので、 日付の入った他のシートを日付ごとに参照していくのですが、 そのシートの中のいつも同じセルV3しか 参照してくれないのです。 このV列のセルも自動的に日付に沿ったセル参照に変更するのは どうしたよろしいでしょうか。 よろしくお願いします。

  • エクセル 関数について

    各月ごとにシートをつくっており、シート7月分のA1に  ='6月分'!A100  というセルをつくって前月分の残高を表示するようにしております。 毎月関数の月を手で変えているのですが、セルC1に日付を入力していますので、その月を使ってA1の関数を自動的に変えて表示することはできないのでしょうか。よろしくお願いします。

  • Excelのシート参照をするにあたって

    あるセルに他のシートを参照して集計する関数を記述しているのですが 参照先のシートが一度消去されてしまうと参照もとのセルに記述した 参照先シート名が自動的に#REFになってしまいます。 (例:「=Sheet1!A2」と記述していて「Sheet1」を削除すると「=#REF!A2」になってしまう) この現象はどうにか防げないものでしょうか? よろしくお願いします。

  • エクセル、シート参照、関数

    こんばんは エクセルで2つの質問があります。 (1) シート2~以降に、各クラスの成績をまとめたデータを シート1に参照しています。 例:シート1:「全クラス成績まとめ」、シート2:「クラスA」、シート3:「クラスB」… ですが、例えば、クラスBに補正点(俗にいうゲタをはかせる、笑)を与えた 新しいシート3(1)のデータが追加で届きました。 この時、(本元の)シート3を削除し、シート3(1)を本採用したいのですが 本元のシート3のデータが、シート1に参照されているため、なかなか、思うようにいきません。 また、面倒に、シート1の参照を、シート3(1)に打ち直しなのでしょうか? (2) ある数値を 「3桁以上(100~)ならば、小数点第1位を四捨五入し、最終的には「整数」  2桁以下( 99~)ならば、小数点第2位を四捨五入し、最終的には「小数点第1位」まで求める。」 そのような関数や書式を教えて下さい。 以上、この2つの質問をよろしくお願いします。 OS:WinXP エクセル2000

  • エクセルのシート名参照関数

    エクセル関数でいろいろ試したのですがうまくいかず困っています。 VBAは出来ないので(苦手なので)できましたら関数で教えてください。 12年1月~12年12月で別々のシートがあり、それぞれ別の『行』『列』に参照をしたい数字があります。 集計シート名『Sheet1』の『A1』に『検査値』、『B1』~『B12』に『12年1月』~『12年12月』、『C1』~『C12』に『該当する値』を表示したいと思います。 具体例 <シート名 : Sheet1> ---A-----B----C 1 リンゴ 12年1月 値 2 -----12年2月 値 3 -----12年3月 値 4 -----12年4月 値 5 -----12年5月 値 <シート名 : 12年1月> ---A----B 1 リンゴ 100 2 バナナ 50 3 メロン 10 4 スイカ 5 5 ミカン 1 <シート名 : 12年2月> ---A----D 1 パイン 10 2 バナナ 20 3 メロン 30 4 リンゴ 40 5 ミカン 50 <シート名 : 12年2月> ---A----F 1 パイン 10 2 バナナ 20 3 スイカ 30 4 リンゴ 40 5 ミカン 50 <シート名 : 12年3月> ---A----C 1 パイン 1 2 レモン 10 3 リンゴ 100 4 メロン 1000 5 イチゴ 10000 上記<シート名 : Sheet1>の『C列』に式を入れ、それぞれのシートから『A1』に該当する値を表示させたいと思います。 文書が下手ですのでわかりにくい内容で申し訳ありません。

  • エクセルのシートを自動で

    こんにちは。 エクセルの複数のシートのデータを自動的に一枚のシートに反映させたいのですが、教えていただけますか? シート1~31まで日々のデータが入っています。それを自動的に一枚のシートにまとめたいのです(集計ではなくて) 例えば、入力時に自動的に反映しても良いですし、もしくは、他の方法でもOKです。 1~31のシートのデータ数は日々違います。 よろしくお願いいたします。

  • エクセルで複数シートを参照

    お世話になります。 タイトルが曖昧で申し訳ありません。 エクセル初心者なのですが、操作でひとつ解決しない点があるのでご教示いただければ幸いです。 現在、勤務表のエクセルデータがあります。 「勤務表.xls」ファイルは、月ごとにシートを増やして同じ雛形で勤務表を作成しています。 そのため、シート数が非常に膨大なものになっています。 あまりの膨大さに、過去の勤務表を参照するときに不便が生じています。 そこで考えたのが、Sheet1にリストのようなものを作成し、リスト内の項目を選択するとSheet1のリストの直下に選択した項目のデータが表示されるというものです。 項目は各シートと連動しており、要は参照したい月を選択するだけで、Sheet1にデータが表示されるという仕組みです。 と、データを参照するための方法は考えたのですが、何分初心者なので、やり方がわかりません。 色々と書籍を参照したりしたのですが、見つからずにこの場をお借りしました。 質問も的を得てなくて分かりづらいと思いますが、このような方法は可能なのか、ご教示ください。 よろしくお願いします。

専門家に質問してみよう