- ベストアンサー
エクセルでわからないことがあって困っています
エクセルについての質問です。シート1へは毎月ごとの数字を入力します。例えば4月とあって、項目がa,b,c・・・と数字入力するところが10箇所ぐらいあります。5月、6月・・・と1年間、入力する項目は毎月同じ箇所ですが、それぞれ数字が違ってきます。まずこのように毎月それぞれ入力したら、それを基にして前月までの数字と次月の数字を合わせた累計の数字が反映されるようにしたいのです。反映されるものは別のシートへでもかまわないのです。1月と2月の累計。1月と2月と3月の累計。というように、今月と前の月までの累計というように、1月ずつ増えた状況でのそれぞれの累計を出す場合の方法をご存知の方いらっしゃればどうか教えてくださいますようお願いいたします。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
各シートの構成が複雑になっていますね。もっと単純化して一つのシートに集大成させた形でまとめの表を作るようにしてはどうでしょう。 例えば集大成のシートでは次のように表を作ります。 A2セルとB2セルを結合してシート名と入力します。C2セルから右方向にはシート名を例えば4月、5月、6月・・・のようにN2セルまで入力します。 O2セルには年合計とでも入力します。 A3セルには各シートからのデータ項目名を入力し、B3セルにはそのセル番地を入力します。 下方の行も同じように入力して、B列には各シートから必要なセル番地を入力します。 C3セルには次の式を入力したのち右横方向にオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。 =IF(ISERROR(INDIRECT(C$2&"!"&$B3)),"",INDIRECT(C$2&"!"&$B3)) これで、各シートに入力されている指定されたセル番地でのデータが表示されます。 年合計はO3セルに次の式を入力し下方にオートフィルドラッグします。 =IF(B3="","",SUM(C3:N3)) なお、ある指定期間内での累計については次のようにしてはどうでしょう。 P1セルとQ1セルを結合して指定期間累計と入力します。 P2セルには集計をしたい初めの月のシート名を入力します。Q2セルには終りの月のシート名を入力します。 P3セルには次の式を入力して下方にオートフィルドラッグします。 =IF(B3="","",IF(AND(P$2<>"",Q$2<>""),SUM(INDIRECT(ADDRESS(ROW(A3),MATCH(P$2,C$2:N$2,0))&":"&ADDRESS(ROW(A3),MATCH(Q$2,C$2:N$2,0)))),"")) これでP列には指定された期間での指定されたセル番地での累計が表示されます。
その他の回答 (7)
- KURUMITO
- ベストアンサー率42% (1835/4283)
回答No5です。 提案にご関心を持っていただきありがとうございます。 >A3セルには各シートからのデータ項目名を入力し、B3セルにはそのセル番地を入力します。 下方の行も同じように入力して、B列には各シートから必要なセル番地を入力します。 上記文章の意味ですが、A3セルから下に入力していくものに特に大きな意味はありません。ただ、B3から下に入力するセル番地は、各月のシートで共通のセル番地です。そのセル番地についてまとめるのですから、そのセル番地は何のためのセル番地かをA3セルから下の行にB列に対応して入力すればよいでしょう。 B列にセル番地を入力しただけではそのセル番地の持つ意味がわからないのでそれが分かるようにするためです。 提案したまとめの表を作ることで、各シートをいちいち覗く必要も無くなります。ぜひ活用してみてください。
お礼
毎度毎度のご丁寧な回答にありがたく感じます。 このご回答でおっしゃっていた意味がわかりました。 私にとってはかなり難解な関数ではありますが、挑戦してみます。
- fujillin
- ベストアンサー率61% (1594/2576)
累計=前月までの累計+今月の値 と考えれば… 各月の累計欄(B1)には以下の式をいれておけばよいことになります。 1月(初期値): =A1 2月(Sheet2): =Sheet1!B1 + A1 3月(Sheet3): =Sheet2!B1 + A1 ・・・・・・・ n月(Sheet3): =Sheet#!B1 + A1 ←#はn-1の値 このままだと、まだ入力されていない月は正しくない(月数が少ない)累計値が表示されてしまいます。 これを回避したいのなら、その月の値が入力されたら累計値も表示されるようにすることにして、 n月 : =IF(A1<>"",Sheet#!B1 + A1,"") ←#は前月のシートNo のように条件付の式にしておけばよろしいかと。 ご質問に沿って、シート名がSheet1、Sheet2・・・の場合で例示しましたが、シート名が違う場合は『Sheet#』の部分を前月のシート名となるようにすればよいです。 各シート同じ式にしたいのであれば、INDIRECT関数を利用することで可能となりますが、どこかのセルに前月のシート名を記入しておくことが必要になります。 (自分のシート名をとれる関数があれば、このようなことは不要なのですが、CELL("filename")関数はどのシートに記載しても、同じ値を返してしまうため、シート固有の値として扱えない不便さがあり、#1様の言う循環参照などになってしまいます)
お礼
わかりやすい回答ありがとうございます。
- KURUMITO
- ベストアンサー率42% (1835/4283)
集大成の表を作ることで、月々の変化をみることもできるようになりますね。 ところで集計の表示の列がOやP列となってA列に書かれた項目名とは大分離れており見ることが大変ですね。次のようにすればよいでしょう。 C3セルを選択してから「ウィンドウ」から「ウィンドウ枠の固定」をクリックします。それによって項目を見ながら年合計や、累計をみることができますね。
お礼
ウィンドウ枠の固定まで教えてくださり感謝感謝です。
- kmetu
- ベストアンサー率41% (562/1346)
訂正です sheet3のB1に =Sheet1!A1+Sheet2A1+A1 ↓ sheet3のB1に =Sheet1!A1+Sheet2!A1+A1
お礼
何回もご丁寧にありがとうございます。やってみます。
- kmetu
- ベストアンサー率41% (562/1346)
> sheet2のB1へShett1のA1+Shett2のA1を表示するようにしたい。同じように、sheet2のB2へShett1のB1+Shett2のB1を表示させるようにしたいのです。そしてsheet3のB1へはShett1のA1+Shett2のA1+Shett3のA1を表示するというようにしたいのです sheet2のB1に =Sheet1!A1+A1 sheet2のB2に =Sheet1!B1+B1 sheet3のB1に =Sheet1!A1+Sheet2A1+A1 とそれぞれ入力してみてください
補足
ありがとうございます。やってみます。
- imogasi
- ベストアンサー率27% (4737/17069)
エクセルの素人は夢想しやすい課題なんだが、(エクセル関数で処理したいと、頭にあると思うが)プログラムVBAを使わないと、原理的に出来ない。 あきらめてください。 == 簡単な例で不可能を示す A1:C2に 前月末 今月 今月末 12 1 13 C2は=A2+B2 だ。これを来月においては、B2は来月の数字を入れるとして、A2は13になって居ないとならないが、A2に=c2と式を入れられない。 循環参照になる。 プログラムなら指示(実行)した機会に、C2の13をA2に移すことは出来る。 だから人手でC列のデータをA列に値を貼り付ける作業をすれば出来る。 以上はB列に当たるデータが入るシートと月末残が入るシートが別でも同じだ。 -- だから、普通使う様式は 例データA4:D7 ーー 1月末 2月末 3月末 前月残高 12 14 18 月中動き 2 4 7 今月残高 14 18 25 のような様式にしないとならない。 B7の式は =B5+B6 横方向に式を複写 C5の式は =B7 横方向に式を複写 ーー 当月の動きと、月末残のシートが同じ様式だと、データー統合のような、人手をかけた操作をすれば、集計できるが、それは違った話だ。
お礼
素人なもので、エクセルならなんでもできるとおもってしまってすみません。
- kmetu
- ベストアンサー率41% (562/1346)
いまひとつ内容が把握できないのですが 単純にA1+B1とか足していったのでは駄目なのですよね。 具体的に、たとえばSheet1のA1~D1に1月分のデータがあり 2月のデータはどこそこ3月はどこそこ、で、累計をどこそこのセルに表示したい など示してみてはいかがでしょう。
お礼
説明下手ですみません。意味がわかりませんよね。ごめんなさい。 でも、早速に回答してくださり感謝感激です。補足としましては、 sheet1のA1~D1に1ヶ月分(1月分)のデータがあります。 sheet2のA1~D1には次の月の1ヶ月分(2月分)のデータがあります。このようにして1年分のSheetがあります。 sheet2のB1へShett1のA1+Shett2のA1を表示するようにしたい。同じように、sheet2のB2へShett1のB1+Shett2のB1を表示させるようにしたいのです。そしてsheet3のB1へはShett1のA1+Shett2のA1+Shett3のA1を表示するというようにしたいのです。 これでわかりますでしょうか?もしお分かりになるようでしたら教えてください。
お礼
ご丁寧な回答に感謝です。ただ、回答の中に >A3セルには各シートからのデータ項目名を入力し、B3セルにはそのセル番地を入力します。 下方の行も同じように入力して、B列には各シートから必要なセル番地を入力します。 のところがよくわかりません。どういう意味ですか? 初めて見る(聞く)関数もありなんだか難しそうではありますが、理解するようにがんばります。