• 締切済み

指定したシートの和を求めたい

Excel2003を使用しています。 同じ形式の表が入力されたシートが1~31までと合計シートで32シートあります。 (日々集計ごとのシートです) シート名も「1」~「31」と「合計」にしています。 ランダムの日付指定で集計を求められるのですが 合計シートの表外に数字を入れて 指定されたシートの和を合計シートに出したいと思っていますが可能でしょうか? 合計シートのA1に1を入力 合計シートのB1に3を入力 合計シートのA3にシート1~3のA3の和が出る といった感じです。 説明不足があればすいません。 教えてくれると嬉しいです。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.7

シート1~3,の1や3はなに?シート名?シート名を数字にしているのですか。 入力は簡単だが、あまりすすめられない。 ーー それと同じ様式・フォーマット(データの行列項目の配置)で在れば、 Sheet4のA12に=SUM(Sheet1:Sheet3!A12)のようにして、Sheet1、Sheet2、Sheet3のA12セルの数値を足し算できる。 これはSheet1からSheet3までと言う意味になろう。しかしここ「から」は名前名称上のものでなく、シートタブがたまたま Sheet1、Sheet2、Sheet3の順位ならんでいた場合の話で、順序を移動する操作が行われると、別の答えになる 不安定さが在る。 この点認識しているのか? ーー 合計シートでA1,A2に入力されるものがシート名そのものとすると、=INDIRECT(A1&"!A12")で=Sheet1!A12と入れる場合と同じ値が取ってこれる。 、=INDIRECT(B1&"!A12")でも=Sheet3!A12と入れる場合と同じ値が取ってこれる。 =INDIRECT(A1&"!a12")+INDIRECT(B1&"!A12")も両者の和を出せる。 しかし=ROUNDUP(INDIRECT(A1&"!a12")+INDIRECT(B1&"!A12"),0)のようなことは出来るが、 =SUM(Sheet1:Sheet3!A12)のSheet1とSheet3をINDIRECTで置き換えられないと思う。 E12に=A1&":"&B1&"!"&"A12"ト入れて、Sheet1:Sheet3!A12となっている状態で =SUM(INDIRECT(E12))としてもエラーになる。 ーー この点について絶対の自信というのは無いが、無理と思う。 良い回答が出れば、私も勉強します。 ーー 其れで関数以外の方法を使わざるを得ないのでは。 ユーザー関数を定義して Function sum3D(a) f = Worksheets("Sheet4").Range("A1") t = Worksheets("Sheet4").Range("B1") fi = Worksheets(f).Index ti = Worksheets(t).Index 'MsgBox fi & " " & ti 'MsgBox a.Row t = 0 For i = fi To ti MsgBox Worksheets(i).Cells(a.Row, a.Column) t = t + Worksheets(i).Cells(a.Row, a.Column) Next i sum3D = t End Function ーー Sheet4(合計シート)のセル(何処でも良い)に =sum3d(A12)と入れる。 A12は各シートの合計したい1つのセル(同一番地)を指定する。 Sheet4上で式の複写も可能 ーー 全体にVBAも含めて、質問者には少し難しい課題と思う。 ーー だから、手作業で3D集計(Googleで照会のこと)をやってください。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.6

VBAにしてもSUMPRODUCTやSUBTOTAL、INDIRECTもそう、質問者はこれらは知らなかったと思われます。 これらを知ることから始めてもよい。記載簡単でもやっていることがわからなければ簡単でないだろう。 対象のシート名は決まっているので、作業セル31個を1つのシート上に作り、31シート分の各合計をあらかじめ式で求めておく。合計シートではどの範囲かを入れなくても、見てわかればいいならそれでも良い。

tamisara
質問者

補足

だからなんなんでしょうか?

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

>合計シートのA1に1を入力 >合計シートのB1に3を入力 >合計シートのA3にシート1~3のA3の和 合計シートのA3に =SUMPRODUCT(SUBTOTAL(9,INDIRECT(INDEX(ROW(INDEX(A:A,A1):INDEX(A:A,B1))&"!a3",)))) などのように。 #少し簡単バージョン: =SUMPRODUCT((ROW(A1:A31)>=A1)*(ROW(A1:A31)<=B1)*SUBTOTAL(9,INDIRECT("'"&ROW(A1:A31)&"'!a3"))) #なぜこれらで計算できるのかの説明はありません。それ故計算のロジックとしては,マクロを使った方が遙かに簡単です。

  • mindatg
  • ベストアンサー率48% (110/227)
回答No.4

そうだね、VBAならなんでもできるね! ひとつづつ考えていけばできる、というのはかなり難易度の高いものにも当てはまるんだけど 簡単そうに言い放ったままで何の解決にもならなそうなので、さくっと書きました。 たぶんこのまま動くはずです。 シート名が全角数字の場合は別途処理する追加する必要があるかも。 Sub Macro1() Dim goukei As Double Dim n_start As ingeter Dim n_end As Integer With Sheets("合計") n_start = Range("A1").Value n_end = Range("A2").Value End With ' このループは、 n_start(A1セルの値) < n_end(A2セルの値) でないと動きません。 For i = n_start To n_end With Sheets(CStr(i)) ' 数値なら合計に加算する。数値じゃないならスルー If IsNumeric(Range("A3").Value) = True Then goukei = goukei + Range("A3").Value End If End With Next i ' 最後に合計シートのA3セルに合計の値を書き込む Sheets("合計").Select Range("A3").Value = goukei End Sub

  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

VBAを使うと良いです。 http://www.asahi-net.or.jp/~zn3y-ngi/YNxv9c48.html 例題) ブック内の全てのワークシートを順に処理するには? みたいなサンプルもあります。 シート名をどう表現するか。 http://www.voicechatjapan.com/excelvba/VBArei2.htm >合計シートのA3にシート1~3のA3の和が出る 対象シートをどう変えていくか。for文使う。 機能的なことはわかっているのだから、 VBAでどの命令を使うか考えてみる。 ポイントをつかんで、1つずつ考えていけばできるレベルです。

  • mindatg
  • ベストアンサー率48% (110/227)
回答No.2

VBAならなんでもできる。 しかし、No1のような頭の悪い回答よりもっと頭の悪い回答を 力業の超ゴリ押しです。 2つのシートの値を合計するだけなら簡単なのですが、 質問のようなシートの範囲を指定する場合は工夫しないといけません。 例えばA5~A35に、シート名を列記する。 合計シートのA3に=SUM(B5:B35)と数式を入れる。 B5に次のような数式を入れる =IF(A5>=$A$1,IF(A5<=$A$2,IF(ISERR(INDIRECT(ADDRESS(3,1,,,A5))),0,INDIRECT(ADDRESS(3,1,,,A5))),""),"") B5セルをコピーしてB6~B35セルに貼り付ける。 画像みたいな感じにします。 ただ、この例の場合だと、A1セルには必ず指定するシートの小さい値、A2には大きい値でないとダメです。 数式内関数の細かい意味はヘルプでも見てください。

  • imo8001
  • ベストアンサー率14% (26/179)
回答No.1

VBAなら可能です

関連するQ&A

  • Excel 指定セルの内容を別シートに飛ばしたい

    問合せ表をExcelで管理しようと考えています。 前任の方がExcelを使えないという事で、これまでWordで入力し紙ベースで管理をしていたそうです。 該当者を探し出すのに大変なのでExcelしたいのですが、私の技術では出来ないので教えて下さい。 シート1はデータ入力用、シート2はデータ出力用、シート3は集計です。 シート1にはA列から順に問合せ月日、氏名、住所、電話番号、問合せ内容、金額、備考、折込日 の順で入力してあります。 出力は折込日ごとに出力し、上の行に集計を入れなければなりません。 集計内容は、問合せ件数、成約数、折込部数、CPI、チラシ経費、金額合計、平均金額です。 集計を入れると列が増えてしまうため、結合をしなければなりません。 そこで出力用をシート2にしようと考えています。 この場合シート1の指定折込日の情報だけシート2に飛ばすにはどのようにしたら良いですか? 乱文でわかりずらいと思いますが、よろしくお願いします。

  • シートの表に簡単に入力する方法

    現在は手動でそのセル毎に入力しています。 皆さんのお知恵をお借りして省力化したいと願っています。 当方は XP EXCEL2003です。 下記のようなシートが12枚(1~12月)あります。   A   B    C D E AH 1 顧客ID 顧客名 合計 1日  2日 ~ 31日 2 001 A社  10,000 10,000 3 002  B社 4 003 C社 180 181 X社      合計 10,000 10,000 0 0 この場合、「顧客ID」「日付」「数値」の3点をシートの表に入力する カードがあってOKボタンをクリックしたら表に入力される方法がありませんか。 例 「顧客ID」001 「日付」1日 「数字」10000と入力してOK しますと 上の表に入力されるカードみたいなもの。 余り詳しくない小生ですがどうぞよろしく御願いします。

  • 《エクセル2000》シート名をセルで指定する?

    「学校」「会社」「家庭」などをシート名に持つファイルがあります。 それぞれに入っている数字を「集計」シートに集計したいのですが、例えば集計シートのA1セルに「学校」などのシート名を表示させて、その「集計シートA1セルの値に該当する名前のシートのB1~B100を合計する」というのを、関数で表現するにはどうすればいいでしょうか?(VBAではなく) よろしくお願い致します。

  • エクセル指定日付の数値を別シートに反映させる方法

    先ほど別の質問を立てましたが、わかりにくかったので、再度掲載させていただきます。 数式をつくっておいて、ある箇所にデータを貼り付けたら、別シートに指定した期間の 数値が反映できるような数式を作りたいと考えています。 A1に「10/1」  (スタート) B1に「11/2」  (エンド) と入力がしてあり、 F12~120に10/1からランダムに10月の日付 G12~120に11/1からランダムに11月の日付 N12~120に数値が入っています。 A12~120には=「F12~120」という数式を B12~120には=「G12~120」という数式を C12~120には=「N12~120」という数式を いれて、反映をさせています。 普段触るところはF12~120・G12~120・N12~120の3つで データを毎回貼り付けています。 A1・B1に入れている数値と一致をしていれば色が変わるように書式設定をしています。 この2~120の中で対象となる色の変わる場所の数値部分(C12~120)の合計の数値を 別のシート「集計」のD1に反映をさせたいです。 そのようなことはできますでしょうか。 説明が下手で申し訳ありませんが どなたかご回答をよろしくお願いいたします。

  • 【Excel】日付を条件のひとつに指定してデータ集計

    Excel2003を使用しています。 Sheet1   A    B         C 1 4/1  (株)Excel    \100 2 4/1  ACCESS    \300 3 4/1  Excel(株)    \200 4 4/2  Word       \150 5 4/2  Excel       \100 6 4/3  ACCESS(有)  \200 7 4/3  Excel       \100 7 4/3  (有)ACCESS  \100 が入力されている表があります。 Sheet2に   A    B    C 1 4/2  合計値 個数 2 4/3  合計値 個数 Sheet2のA1セルに日付(仮に4/2とします)を入力したら、Sheet1にある条件に一致する日付を検索し、尚且つ、部分一致する文字列(仮にExcelとします)を検索し、両条件に一致したC列の合計を Sheet2のB1セルに表示させる様にしたいのですが、どのようにすればいいでしょうか? 又、上記同様で Sheet2のA1セルに日付(仮に4/3とします)を入力したら、Sheet1にある条件に一致する日付を検索し、尚且つ、部分一致する文字列(仮にACCESSとします)を検索し、両条件に一致した個数を Sheet2のC2セルに表示させる様にしたいのですが、どのようにすればいいでしょうか? 関数で試してみたのですが、うまくいかなかったので、質問させていただきました。 よろしくお願いします。

  • SUM関数で教えて下さい。

    関数かマクロで教えて下さい。 シート1に日付が4/1~9/30があり、その下に売上数字があります。 シート2のセルA1に集計開始日、セルC1に集計終了日を入力すると セルB2にシート1の集計期間の売上合計が計算されるようにしたい のですが、わからなくて困ってます。 集計期間は、変動しますので集計開始日、集計終了日を入力した 期間で集計したです。 わかりにくい説明ですみませんが宜しくお願い致します。 シート1 日付 4/1 4/2 4/3 4/4 4/5 → 9/28 9/29 9/30 売上 10   21   3   9   6    → 4   6  7 シート2 5/1 ~ 5/15 売上合計 163

  • 1枚のシートに集計を入力して別シートで印刷

    シート1に日付と商品の個数を入力して別のシートに日付指定してその日の集計を印刷をしたいのですが日付の指定がうまうできないので教えて下さい。 エクセルは2010です。 シート1(入力のみ)      1日   2日   3日・・・・・ 商品1  2    3     5 商品2  4    1     2 商品3  3    3     3 シート2 1日←日付指定 商品1  2 商品2  4 商品3  3 シートを日数分作り印刷をするのも考えたのですが出来ればシートを増やしたくないので ご教授宜しくお願いします。

  • 指定日までの売上合計を別シートに抽出したい。

    指定日までの売上合計を別シートに抽出したい。 添付図左側(Sheet1)に指定した日までの売上合計を出したいのです。 Sheet2でA店の売上と客数を入力していきます。 Sheet3はB店、Sheet4はC店、・・・・と続き、それぞれに売上と客数を入力します。 Sheet1のB3に「15」(2010/5/15の意)と入力します。 すると、C5に1日~15日までの合計売上金額が抽出されるようにしたいのです。 B3の表示形式は、ユーザー定義で「d」にしています。 どうかよろしくお願いいたします。

  • EXCEL LOOKUP関数で別シートをセルから参照したい

    シート:集計表・4月・5月・6月・・・・3月 (4月~3月までは売上表が入っていて、表の形式はまったく同じです。) 集計表のシートにおいて、 A1にシート名を入力することによって、そのシートを使った範囲を取得したいと思ってます。 B2に =vlookup(B1,'A1'!A:B,2,0) この場合、'A1'! は有効しませんが、何かの関数を使ってこれと同じ結果を得たいと考えています。 いろいろ検索しましたが、(検索の仕方も悪いかもしれません。) VLOOKUP関数を使って複数列を範囲としたいので、よく出てくるINDIRECT関数はセル番地を指定する以上、無理だと判断しました・・・。 よろしくお願いします。

  • EXCELでシート名を含む数式を作成するマクロ

    エクセルで困っています。 (WindowsXP+Excel2000です) シートが5枚、シート名を「No1」~「No4」と「集計」と付けています。 シートの体裁は全て同じで、「No1」から「No4」のシートを串刺し演算して「集計」シートに合計を表示させています。 =SUM('No1:No4'!A1) のような感じです。 質問なんですが、「集計」シートのA2にNo2と入力し、A3にNo3と入力した後にマクロを実行すれば、A1の数式が =SUM('No2:No3'!A1) のように変わるマクロは出来ないでしょうか。 INDIRECTとか使ってみてもうまく行きません。 よろしくお願いします。

専門家に質問してみよう