• ベストアンサー

【VBA】シートを跨いで合計する方法

kuma56の回答

  • kuma56
  • ベストアンサー率31% (1423/4528)
回答No.1

んん?? よく判らない点がいくつか・・・ >各シートのA列最終行には予め「合計」の文言が有り、そのE列に予め「合計値」が計算されています。 ”A列最終行”ってのは、シート最下端の1048576行って事かな? それとも、そのシートに作ってある表の最終行って事かな?? 質問文から質問者のスキルを推測すると、VBAの構文をすべて作れっていう丸投げに感じても来るが、判らない点はどこなのだろう?? >現在のシートから最後のシートまでの合計値が入っているセルを合計し、 これだけならVBAを使わなくても、どこかの任意のセルに計算式を入れればできるのではないでしょうかな?? そのセルの値をMSGBOXに表示させれば良いように思うが、それではダメなんかな?? 自身で考えた方法ややってみてうまくいかなかった点などを明確にしたほうがより良いアドバイスが貰いやすいと思いますよん・・・・

0611birth
質問者

お礼

kuma56 様 ご意見等有難うございます。 当方素人級にて、教えて頂いたコードを読み解いて勉強し、 かつ仕事に当てはめる方法で理解を勧めていきたいと考えています。 補足に”A列最終行”の意図と、"VBAで各シートの合計をしたい"理由をコメントします。 もし宜しければご教示願います。

0611birth
質問者

補足

A列最終行の意味・・・A列の最終行には「合計」の文言が有りますが、データの件数が異なる為、各シートでの「A最終行」はまちまちになります。例)シート2は100行目、シート3は140行目等。 VBAで合計したい理由・・・シート数が20シート位有り、各シートの合計値のセルを「+」で足していくのは時間が掛かるし間違いの元となります。最終行は各シート異なる為、範囲広めのVLOOKUPでA列「合計」の文言をキーとし「合計値」の列を返すのも、20シート分関数を「+」でつないでいくのは非効率となります。

関連するQ&A

  • エクセル vba セル合計

    添付表について下記の様な処理をしたいのですが途中からVBAの書き方が(セル合計)がわからず困っております。  *日別の原価計(K列のセル値)の小計(K列の最終入力行の下※k112)に計算する。 自分ではこの様を処理を考えております。 (1)商品名(G列)最終入力行の1行下を選ぶ(G112) (2) (1)の同行にある(k112)を合計算出セルとして選ぶ (3)商品名(G列)最終入力行(g112)からその列上の空欄行の1セル下(g66)を見て(要はg 112からEnd(xlUp))、その行と同じ範囲のK列(k112ーk66)を合計をする範囲として選ぶ (4) (2)の合計する範囲を(3)で算出する。 VBA素人の私では(1)~(3)までを下記の通り書きました。 Sub 原価合計求める() Dim lastrowshu As Long Dim lastrowgen As Long Dim fastrowgen As Long lastrowshu = Cells(Rows.Count, 7).End(xlUp).Row + 1 '帳票シートの商品名(G列)最終入力行+1を取得する。 lastrowgen = Cells(Rows.Count, 7).End(xlUp).Row '商品名行の最終入力 fastrowgen = Cells(lastrowgen, 7).End(xlUp).Row '商品名最終入力行から一番上 Cells(lastrowshu, 11).Select ここまでを実行すると添付ファイルでいうk112セルをselectするまではうまくいきましたが、 これ以降の(4)の合計の書き方がわかりません。 どなたか御教授願います。 あるいはもっといい方法があれば同時にご指導頂けますと幸いです。

  • VBA 一つのシートにまとめる

    下記の条件でVBAではどうすればいいのか、教えて頂けませんでしょうか・ TEST1.xls TEST2.xls TEST3.xls ・上記には、それぞれDATA1シートとDATA2シートがあります。 ・このうち、3つのブックのDATA1シートのB列からT列の2行目から最終行までを、matome.xlsのmatomeシートの最終行から追加していきたいのです。 仮に、matome.xlsのmatomeシートの最終行(データがある行)が50行目だった場合、 TEST1.xlsのB列からT列の2行目から最終行を51行目に貼り付け、それが75行目までだったとすると、TEST2.xlsのB列からT列の2行目から最終行のデータは76行目からといった感じです。 わかりづらくて申し訳ありませんが、よろしくお願い致します。

  • 【VBA】シートの内容を別シートへ転記する方法

    1シート目のA列には品番が沢山並んでおり、B列、C列に内訳、D列に合計が有ります。例)参照 下記の処理をしたいです。 ------------------------------------------------------------------- 2シート目へ1行目の見出しとAAAの品番の行を転記 3シート目へ1行目の見出しとBBBの品番の行を転記 同様に、A列最終行迄繰り返しシートを作成 ------------------------------------------------------------------- A列の品番が変わる行迄を一まとまりとして行選択する方法にて コードをお教え頂きたく、宜しくお願いします。お教え頂いた内容は理解する様努めます。 例) 内訳1 内訳2 合計 AAA ○○○ ○○○ ○○○ AAA ○○○ ○○○ ○○○ BBB ○○○ ○○○ ○○○ BBB ○○○ ○○○ ○○○ CCC ○○○ ○○○ ○○○ CCC ○○○ ○○○ ○○○ DDD ○○○ ○○○ ○○○ DDD ○○○ ○○○ ○○○ DDD ○○○ ○○○ ○○○ 以下略

  • エクセルマクロ 別シートへ行列を入れ替えてコピペ

    下記内容のエクセルのマクロをご教示いただきたいと存じます。 ①「data」シートのB2からデータが入力されている最終行までをコピー(20行目までデータが入力されていたとすると、B2~B20をコピー。最終行は不定) ②「result」シートのE列のデータが入力されている最終行の次行に①のデータを行列を入れ替えてペースト(E列のデータが19行目まで入力されていたとすると、「E20」セルに①のデータ<この場合だと、「data」シートのB2~B20のデータ>を行列を入れ替えてペースト。「result」シートのE列の最終行は不定)

  • Excel VBA同一文字列のポイントを合計

    ExcelのVBAのコードを教えてください。 (自分で範囲(Rangeや Cells)のValueの合計などはできるのですが、グダグダ書くとわかりにくくなるので、やりたいこと=実現したいことのみ書きます) 画像の上図(青い線より上の図)は、現状もっているExcelのファイルです。緑のタイトルがついているE列までが実データです。 似たようなデータ(表)を含むワークシートがこのファイル(Book内)に複数あるのですが、とりあえず処理対象はアクティブな(選択して見ている)ワークシートを対象とします。 作業としては、上図のように6行目にタイトルが並んでおり、そのうちのC列「予約識別子」とD列「ポイント」を集計しています(処理対象はC, D列です)。予約を入れる「クリック」という「行為」に対して予約識別子が立って、それに対してポイントが溜まる、みたいなシステムです。最終行は毎月異なるので、n行としています。n行というのは、月によって100行のときもあれば、10000行を超えることもあります。 処理行為としては、黄色い2列を新たに加えて作業に使っています。 G列に計算式でC列(予約識別子)に重複がある行に1というフラグを建て、次にフィルターでC列の同じ文字列(例えば「CD08」)をフィルターして、Subtotalでそれぞれの文字列(例えば「CD08」)のポイントの合計を算出しています(F列の最初の識別子の行に、合計ポイントを入れている[F7の1000、F9の2500、F12の16000など])。 最終的に、図の青い線より下のような別シート(新シート)をつくっています。これが成果物です。(シート名はSheet1、Sheet(1)のような、単純につくった順番がわかれば良いです。) 現在計算式とフィルターでやっている処理は、100行程度であれば人の手でもすぐに終わるのですが、10000行を越えていると、時間がかかったり、操作する人によってはヒューマンエラーで計算ミスが起こります。 これをVBAでやりたいのです。 C列(文字列String)の重複をみつけ、D列のポイント数値(これは数字Longです)を合計して、別の新しいシートに左上(A1からで良い)並べたい。 これを実現するコードを教えてください。 なお (ここから下はマストではないのですが) 集計後の識別子の並びは、重複したものがみつかっても最初に出現した行の文字列を一覧の最初に残したいと思っています。 例えば7行目にある「CD08」(青いセル)は上図の表では1行目、10行目に出現しているのですが、下図のシートでも最初に出現した行(新シートでも最初の行)に入れたい。 上図の12行目にある「E3EA」(ピンク)は、15,19,20行にもありますが、12行目を最初の出現とし、「BF0D」の次に置いています。 これはクリックをされた方が、複数の商品に対して予約行為(クリック)を行えますが、予約時刻を記録している列がすでに削除されてしまっているため、予約順(最初の一手の早押し順)を見える化しておきたいのです。

  • Excel 3行おきの合計を別のシートに連続して抽出

    以下のようにsheet1から3行おきにあるデータの合計を連続してsheet2のセルに計算式を入力する場合、Sheet2の各セルに一つ一つ計算式を入力するのではなく、A1に式を入力し、オートフィルでコピーできるような計算式を教えてください。 sheet2 A1 =SUM(Sheet1!A3:E3) A2 =SUM(Sheet1!A7:E7) A3 =SUM(Sheet1!A11:E11) A4 =SUM(Sheet1!A15:E15)          ・          ・          ・

  • 他シートの特定項目のみの合計額を表示させる方法

    エクセルにて、特定項目の集計について質問がございます。 【状況】 添付資料の「シートA」のE6(赤いセル)に、「シートB」のE列に『旅費交通費』と記載されているもののK列にある金額の合計額を表示させたい。 基礎的な内容かもしれませんが、ご教示いただけると大変助かります。 よろしくお願いいたします。

  • 別シートのセル値を表示する方法

    どんな計算式(関数が)良いかわからずご教授ください 例)AシートのA1セルに計算式を設定してBシートのあるセル値を表示したい Bシートのあるセル値とは。。。 2行目(固定)にある一番右端にある値(ここでいえば◆。5、6列には入っていないので4列目となる) ◆がなければ3列目の×を表示したい。(可変) セル 1行目 1 2 3 4 5 6 2行目 ○△×◆ よろしくお願いします。

  • 【VBA】全てのシートに処理

    下図で状況を説明します。 ①中央の「シート名変更」ブックの全シートについて、各シートのE1セルをキーとして、VLOOKUPでシート名を左の「シート名マクロ」ブックから拾い、「シート名変更」ブックの各シートのA1セルに一旦表示させます。(本当はシート名をダイレクトに変えたい) ②「シート名変更」ブックのA1セルに表示された文言を、そのシートのシート名とします。 ③「シート名変更」ブックの全てのシートが同じ書式である為、最終シート迄①/②を繰り返します。 現状、右の様にコードを書きましたが、上手く動くのがアクティブシートのみとなり、次のシートに処理が移行しません。 間違いを教示頂きたく、宜しくお願いします。

  • 1シート~12シートのセルの合計は

    1シートの中では A2からA10のセルの合計 =SUM(A2:A10)  は式が出来たのですが 1~12シートの A2のセルの合計を 13シートの A2に 計上したいのですが どうしたら計算できますか?