人に聞けない痔の悩み、これでスッキリ >>

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

エクセル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カ月前に表示させたいです。

自動的にこのような表示のさせる関数、もしくは方法があれば教えて下さい。

A 回答 (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"))
下にコピー,右にコピー
「エクセルで、月によって参照するシートを自」の回答画像4
    • good
    • 0

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()に置き換えてもいいです。
    • good
    • 0
この回答へのお礼

大変すいません。
シートの参照ができれば、後は自分でできると思ったのですが、解決しませんでした。
大変失礼なのですが、追加質問させて頂きます。

集計用シートのC列に名前が入っており、
また各月のシートのE列に名前、G列に数値が入っています。

集計用シートのF列~Q列に、1カ月前~12カ月前の集計表示をさせたいのですが、
集計用シートの名前と同じ名前を、各月のシートから検索し、その数値の合計を表示させたいです。

例)
今月が6月だとして、集計用シートのC4=Aさんの場合、
5月のシートを参照し、E列に"Aさん"と入力されている行(複数ある場合あり)のG列に入っている数値の合計を、集計用シートのF4セル(1カ月前のデータを表示するセル)に表示させたいです。
同じように、4月のシートを参照し、同じ名前の合計数値をG4セル(2カ月前のデータを表示するセル)に表示するといった具合です。
また、集計用シートはC5,C6・・・と続きます。

申し訳ありませんが、解決方法を御伝授頂けないでしょうか。

お礼日時:2010/06/08 21:48

シート名を年月にすれば、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")))
:
(コピペでいいかも)
    • good
    • 0

分析ツールをインストールしてあれば、edate関数が使えます。



これはedate(日付, 月)で日付から月数後の日付を返すので、たとえ
ばmonth(edate(today(),-1))とすれば先月が何月だったか判るわけ
ですね。そうすると6月である今「5月」シートのG13を参照するには

=indirect(month(edate(today(),-1))&"月!G13")

の様になりますね。
    • good
    • 0
この回答へのお礼

大変すいません。
シートの参照ができれば、後は自分でできると思ったのですが、解決しませんでした。
大変失礼なのですが、追加質問させて頂きます。

集計用シートのC列に名前が入っており、
また各月のシートのE列に名前、G列に数値が入っています。

集計用シートのF列~Q列に、1カ月前~12カ月前の集計表示をさせたいのですが、
集計用シートの名前と同じ名前を、各月のシートから検索し、その数値の合計を表示させたいです。

例)
今月が6月だとして、集計用シートのC4=Aさんの場合、
5月のシートを参照し、E列に"Aさん"と入力されている行(複数ある場合あり)のG列に入っている数値の合計を、集計用シートのF4セル(1カ月前のデータを表示するセル)に表示させたいです。
同じように、4月のシートを参照し、同じ名前の合計数値をG4セル(2カ月前のデータを表示するセル)に表示するといった具合です。
また、集計用シートはC5,C6・・・と続きます。

申し訳ありませんが、解決方法を御伝授頂けないでしょうか。

お礼日時:2010/06/08 21:47

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

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

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

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

Q月毎に参照するセルを変更したい。

こんばんは、エクセルについて質問があります。
  1月 2月 3月 ・・・
A1 10 40 70 ・・・
A2 10 40 70 ・・・
B1 20 50 80 ・・・
B2 20 50 80 ・・・
C1 30 60 90 ・・・
C2 30 60 90 ・・・

というデータの入ったシートから、別のシートに

1月分合計(※1)
A 20
B 40
C 60

という表を※1のセルの値(1月分であれば"1")を判定して1枚のシートにしたい(※1のセルの値を変えると各月分の表になる)のですが、SUM関数とIF関数を組み合わせて作成したところエラーとなってしまいます。調べてみたところIF関数のネストは8階層までということで、12ヶ月分の判定は難しいようです。どなたか回避方法をご存知の方がいらっしゃいましたら、ご教授願えれば幸いです。よろしくお願いいたします。

Aベストアンサー

んと、関数をバラすと解りやすいです。

CHAR は数字から文字を返します。A ならば 65 、B ならば 66 です。
セルA1に 1 を入れた時に、B が出れば良い訳です。
=CHAR(A1+65) とセルに入力し、A1に 1 を入れれば B と出ます。

これを元の式になるように&で繋いで文字列を作ります。

="Sheet1!"&CHAR(A1+65)&2&":"&CHAR(A1+65)&3
とセルに入力すると Sheet1!B2:B3 と出るハズです。

このままではただの文字列なのですが、INDIRECT関数を使うとセル参照として使えるようになります。

それをSUMに渡してあげれば合計が計算されます。

QExcelでシートに年月を自動で変更するやり方

調べて似たような質問もあったのですが、希望の内容のがなかったので質問させて下さい。

Excel2010を使用しています。

Excelでシート毎に月の請求書(今年の4月~来年の3月分)を作成しています。
1年(12ヶ月分)まとめて請求する為、シート1に平成25年4月と入力したら
シート2(平成25年5月の分)~シート12(平成26年3月の分)まで『年、月』の変更を自動できる方法はありませんでしょうか?
日付は必要ないのでユーザー定義で日付を表示しないようにシート1で設定しました。

自分なりに調べてシート2の平成25年5月にする分は
=DATE(YEAR(シート1の平成25年4月の場所),MONTH(シート1の平成25年4月の場所)+2,)
にすればシート2は平成25年5月と変更できましたが、
シート3以降もやりたいのですがこのやり方ですとシート毎に
MONTHの数字を+2から+3、+4、+5、・・・・と入力を変更していかないといけないので手間がかかります。

全シートを複数選択して一度にMONTHの数値を増やして設定する方法はありませんでしょうか?
又はもっと別のわかりやすい方法などがございましたらお教え頂ければ有難いです。

ちなみにシート名は○月と登録しています。

今回の分は手打ちで入力しましたので急ぎではないです。
暇なときにでも教えて頂ければと思います。

会社で使用している為、帰宅後Excelを使用できませんので返信など遅れる場合がございます。

調べて似たような質問もあったのですが、希望の内容のがなかったので質問させて下さい。

Excel2010を使用しています。

Excelでシート毎に月の請求書(今年の4月~来年の3月分)を作成しています。
1年(12ヶ月分)まとめて請求する為、シート1に平成25年4月と入力したら
シート2(平成25年5月の分)~シート12(平成26年3月の分)まで『年、月』の変更を自動できる方法はありませんでしょうか?
日付は必要ないのでユーザー定義で日付を表示しないようにシート1で設定しました。

自分なりに調べてシート2の平成...続きを読む

Aベストアンサー

例えば各シートのA1セルにお望みの表示をさせるとしたら初めにシート見出しで4月~3月までをShiftまたはCtrlキーを押しながらクリックします。これで同じ作業グループが構成されます。
A1セルには次の式を入力します。

=IF(AND(SUBSTITUTE(TRIM(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,10)),"月","")*1>=4,SUBSTITUTE(TRIM(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,10)),"月","")*1<=12),DATE(2013,SUBSTITUTE(TRIM(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,10)),"月",""),1),DATE(2014,SUBSTITUTE(TRIM(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,10)),"月",""),1))

その後にA1セルを右クリックして「セルの書式設定」の「表示形式」の「ユーザー定義」で種類の窓には ggge"年"m"月" を入力してOKします。
その後にシート見出しで右クリックし「作業グループ解除」を選択します。

例えば各シートのA1セルにお望みの表示をさせるとしたら初めにシート見出しで4月~3月までをShiftまたはCtrlキーを押しながらクリックします。これで同じ作業グループが構成されます。
A1セルには次の式を入力します。

=IF(AND(SUBSTITUTE(TRIM(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,10)),"月","")*1>=4,SUBSTITUTE(TRIM(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,10)),"月","")*1<=12),DATE(2013,SUBSTITUTE(TRIM(MID(CELL("filename",A1),FIND("]",CELL("file...続きを読む

Q1年分のデータから特定の月分のデータを抽出→表示

エクセル初心者です。
仕事で機材の貸し出しをしておりまして、
それを受付、まとめ、集計しているエクセルの表があります。

受付日、貸し出し機材、貸し出し先、使用時間を日毎にベタ打ちしたものがあり、
それが1年分、エクセルの表で1シートにまとめています。

その中から、月ごとのデータをシート2に抽出したい(それを元に、月別のまとめをするので)のですが、
どうすればいいでしょうか。
理想は、4/1と入力したら、4/1~4/30までのデータが表示される、
というようなものなのですが…。

そういうものになると、やはりマクロなどになりますでしょうか?
オートフィルではなく、関数で表示させたいです。

ただ表示させるだけでいいのですが…。

初心者なのに高望みをして申し訳ないのですが、
作れと上司から命令されています…。
どうかお力をお貸しください。よろしくお願いいたします。

Aベストアンサー

こんばんは!
一例です。

↓の画像で説明します。
左側が元データでSheet1・右側が表示させるデータでSheet2とします。
Sheet2のA1セルに検索したい月の数値を入力すると4行目以降に表示させるようにしてみました。

Sheet1に作業用の列を1列設けます。
作業列E2セルに
=IF(OR(Sheet2!A$1="",MONTH(A2)<>Sheet2!A$1),"",ROW())
という数式を入れこれ以上データはない!というくらいしっかり下へオートフィルでコピーしておきます。

そしてSheet2のA4セルに
=IF(COUNT(Sheet1!$E:$E)<ROW(A1),"",INDEX(Sheet1!A:A,SMALL(Sheet1!$E:$E,ROW(A1))))
という数式を入れD4セルまで右にコピー!
そして
A4セルの表示形式は「日付」に、
D4セルの表示形式は「時刻」(←本来であればユーザー定義から [h]:mm としておいた方が良いと思います9
最後にA4~D4セルを範囲指定 → D4セルのフィルハンドルで下へコピーすると
画像のような感じになります。m(_ _)m

こんばんは!
一例です。

↓の画像で説明します。
左側が元データでSheet1・右側が表示させるデータでSheet2とします。
Sheet2のA1セルに検索したい月の数値を入力すると4行目以降に表示させるようにしてみました。

Sheet1に作業用の列を1列設けます。
作業列E2セルに
=IF(OR(Sheet2!A$1="",MONTH(A2)<>Sheet2!A$1),"",ROW())
という数式を入れこれ以上データはない!というくらいしっかり下へオートフィルでコピーしておきます。

そしてSheet2のA4セルに
=IF(COUNT(Sheet1!$E:$E)<ROW(A1),"",INDEX(Sheet1!A:A,...続きを読む

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列全てコピーしたい場合。
  コ...続きを読む

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

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エクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Q(Excel)あるセルに文字を入力しただけで、同じブック内のほかのワークシートにも、同じ文字が自動的に入るようにするには?

こんにちは。
質問内容はタイトルのとおりです。

あるワークシートのあるセルに文字を入力すると、ほかのワークシートのセルにも同じ文字が自動的に書き込まれる方法を知りたいです(ブックは同じ)。複数のワークシートを制御するには、やはりマクロを使うのでしょうか?

よろしくお願いします。

Aベストアンサー

clam_chowderさん、こんにちは。

Sheet1のA1にたとえば「100」と入力しますね。
Sheet2のA1に、これと同じ数値を表示するには、
 =Sheet1!A1
でOKです。

数式をいれるのが苦手なら、
Sheet2のA1セルで「=」を入力すると、数式入力状態に入りますから、
ここでSheet1のシートタブをクリックし、
リンクしたいA1セルをクリックしてEnterすると、
自動的にさきほどと同じ式が入ります。

Qエクセル 指定した月のデータを自動的に反映させられる方法

エクセル初心者です。

現在、エクセルで売上表を商品別に作成しております。

当月データとして、当月分の売上や商品別の販売数、前月分との比較を表にしてあります。【A表】
Aとは別に、
1年間の商品別、販売数の表(Aの前月分という行と内容は同じです)も同じシート内にあります。【B表】

やりたいのは、
A表の前月分という行に、B表のデータを丸々移して反映させたい。
そして、それを何月かを指定しただけで、自動的にその月のデータを反映させられるようにしたいです。

どなたかご教授頂きたいです!

Aベストアンサー

こんにちは。私も初心者ですがコメント失礼いたします。

SUMIFS関数を使うのはいかがでしょうか。(参照範囲は例です)
=SUMIFS($C$17:$C$36,$A$17:$A$36,DATE(YEAR($A3),MONTH($A3)-1,DAY($A3)),$B$17:$B$36,$B3)
=SUMIFS(合計したい箇所,B表の日付が入力されている範囲,A表の日付が入力されているセルからマイナス1月,B表の商品名が入力されている範囲,A表の販売個数が入力されているセル)

サンプルファイルを作成してみましたので、よろしければご確認ください。
http://firestorage.jp/download/7f514ee9147c875f0fcc6db108a22d36e0a38047

ファイル名
2016-02-05_サンプル.xlsx

A表のセルA3の日付を変更すれば、A3に入力された月の前月数値をE・F欄に反映させます。

※注意
”月”の欄は全てその月の”1日”として入力する必要があります。
表示形式を「yyyy年mm月」にしていますが、実際は日付が1日になっています。

こんにちは。私も初心者ですがコメント失礼いたします。

SUMIFS関数を使うのはいかがでしょうか。(参照範囲は例です)
=SUMIFS($C$17:$C$36,$A$17:$A$36,DATE(YEAR($A3),MONTH($A3)-1,DAY($A3)),$B$17:$B$36,$B3)
=SUMIFS(合計したい箇所,B表の日付が入力されている範囲,A表の日付が入力されているセルからマイナス1月,B表の商品名が入力されている範囲,A表の販売個数が入力されているセル)

サンプルファイルを作成してみましたので、よろしければご確認ください。
http://firestorage.jp/download/7f514ee914...続きを読む


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

人気Q&Aランキング