• ベストアンサー

VBAで、行数が変化する表の合計を求めたい。

 前にあった質問(質問番号730576)の回答で、ラスト行を取得して合計を求めるコードを拝見しました。  今回の質問は、複数の表が貼付された場合で、第1の表のラスト行に合計を求めるのは上記方法で可能ですが、第2以降の表に合計を求める方法がわかりません。各表は、フィルタ抽出のため抽出データ(行)が可変するため、行頭が変化するため、うまくいかず困っています。どなたか、教えて下さい。

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

SUBTOTAL関数 http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/sum.htm#subtotal ではダメでしょうか? >(質問番号730576) http://okwave.jp/qa730576.html 表構成が不明なので後は何とも。

sstandc
質問者

お礼

早速の回答ありがとうございます。 表構成を含め、再度、投稿いたします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBAで、行数が変化する表の合計を求めたい。No2

    質問番号:4708445で回答頂きありがとうございます。引き続き申し訳ありません。 質問内容が文字数制限を意識する余り、舌足らずとなっておりました。  表構成(行見出し)は以下の通りです。   年度・お名前・ランク1・ランク2・金額 (ランクは1~4) このような複数の表をランク1、ランク2でフィルタ抽出(ランク1=1、ランク2=1等)し、抽出結果を集計シートに転機します。転記する際にラスト行を取得して合計を求めるのですが、抽出ランクにより、表毎に抽出先の数は変化(よって抽出行は可変する)します。抽出条件を変えるため、結果、集計シートは、上記行見出しは同じですが、行数は異なる表が複数貼付られます。貼付時、第1の表から3行下空白で第2の表以下を貼付します。その後、表毎の最終行に合計(SUM)したいのですが、表現が稚拙で申し訳ありませんでした。  SUBTOTAL関数ですと、第1の表の合計セルの式をコピペで行うようになると思いますが、ここ作業をVBAではできないのでしょうか?

  • 抽出された1行おきのデータだけを合計したい

    1行おきのデータだけを合計するという方法は過去の情報を見て習得し便利に使わせて頂いております。 実は、今回フィルターで抽出されたデーターの1行おき合計を実施したいのです。 私の部下が、1グループの情報を複数行にまとめて表を作成したために今回のような質問に至りました。 なまえ 血液型  身長  ****            体重 --------------------------------- Aさん  O   176 Aさん  O    71 Bさん  A   155 Bさん A    60 Cさん  O   180 Cさん  O    76 *** ***  これは本当に例えの表なんですが、O型だけの人間の体重の合計を計算させたいのです。血液型だけの指定での合計なら他の方法も・・ということもあるでしょうが、他に複数の条件等を指定して抽出させることを考えますと、フィルターで抽出条件を任意に指定して抽出を考えたいのです。抽出後の表示されたデーターから合計を算出する方法・・ さてこんなこと出来ますか?

  • VBA 表の1つ下のセルを選択する

    EXCEL2003のVBAを使っています。 オートフィルタで抽出させた表があります。 入力されているセルの、1つ下のセルを選択するにはどうしたら良いでしょうか。     A 1  あああ  2  あああ  5  あああ  1行目から19行目までの列の中で、"あああ"だけをオートフィルタで抽出している 10  あああ  14  あああ   16  あああ  20   ※ ←ここを選択したい。 Range("A65536").Select Selection.End(xlUp).Select ActiveCell.Offset(1, 0).Select これだとA17のセルが選択されてしまいます。 表全体の1つ下のセルを選択する方法はあるでしょうか?

  • VBAで印刷ページ最終行にページ計表示印刷したい

    いつもこのサイトでは有益な情報ばかりで大変助かっています。 質問ですが表題どうりで200行20列程度の行方向可変の集計表なのですが印刷する際に、表の最終行に表の合計は表示、印刷ともできるのですが、 各頁(40行程度)の合計はどのようにコードを書けば良いのかどなたか教えていただけないでしょうか。

  • エクセル2010 表の作成、コピペについて

    1つのシートに30社の業者に依頼している商品リストがあります。 それには業者名、商品名、寸法、価格、発注数が記載されています。 それを業者ごとに分けて作成します。 表は10行ごとに太い線をひきます。 1ページに31行です。 31行目は小計もしくは合計です。 2ページ、3ページと同じように続きます。 業者によってページ数はさまざまです。 フィルタをかけたデータを一社ずつコピー後、表に値貼付をしています。 しかし、データによっては数値が赤になっていたり取り消し線また太字になっています。 それに気づかずすべてを値貼付してしまい、すべての書式がきえてしまい、後で ひとつずつ書式を直していきました。 10行ごとに太線をひいた表をそのまま用いるためには値貼付をしないと私はうまく できません。。。 表はそのまま使い、データもそのまま貼り付ける方法を御教授ください。 宜しくお願い致します。

  • ワード2000 :2つの表を合併し列幅調整

    ワード2000で同じような表、3行5列の表Aと3行5列の表Bとを合併したときに各表の列幅が違うと合わせなければなりませんが、手で調整しないで(それほどめんどうでもないが)他に簡単にやる方法はありますか。ワード2000で同じような表、3行5列の表Aと3行5列の表Bとを合併したときに各表の列幅が違うと合わせなければなりませんが、手で調整しないで(それほどめんどうでもないが)他に簡単にやる方法はありますか。

  • 特定列だけ行数が多い表の作り方

    HTMLでborder="1"で表を作る際に、例えば合計欄のような、特定の列だけ行数が多い表を作るには、どのようにして作ればいいのでしょうか?  ┌─┬─┬─┐  ├─┼─┼─┤  └─┴─┼─┤        └─┘←このような部分 2行目までと3行目とを別のテーブルで作ってみたのですが、空間が空いてしまったり、線が太くなってしまいうまくいきませんでした。 いい方法があれば教えてください。

    • ベストアンサー
    • HTML
  • データベースの最後の行は抽出対象にしたくない

    大変初歩的な質問かもしれないのですが、データベースの最後の行に、「合計」が入っている場合、(例えば年間売上表など)オートフィルタを使い、例えば「30,000以上」で抽出しても、最後の行は抽出されないようにすることはできるでしょうか? また「トップテン」を使い、「上位5項目」で抽出した際、合計行以外を抽出対象としたい場合などもあります。 オートフィルタでの抽出の際に、範囲を決めて抽出することはできるのでしょうか? 教えていただければ大変助かります。どうぞ宜しくお願いします。

  • VBA ふたつおきに加算した時の合計の表示

    EXCELのVBAで下記のような表に対し、合計を求めるコードを作成しました。    A     B    C     D   E   ~O P 1            表題 2           小見出し 4              4月   5月   6月 ~3月 計 5       予約   100   200   100    6 佐藤   手数    30   20    20   7       金額   130   220   120 8       予約   150   100   100 9 斉藤   手数   30    20    20 10      金額   180   120   120 11      予約   100   100   100 12加藤   手数    20   30    20 13      金額   120   130   120    ・    ・    ・   合計         430   470    360  ←それぞれの金額だけを合計した値 ※人が増えたり減ったりしますので行数が3行づつ変化します。  入力する人が限定されないため、セルへの計算式入力(消されてしまう可能性があるため)と、  EXCELの機能(フィルター)などを使用して計算する方法がとれません。 この、合計の部分を求めるため、 Dim stRow As Long Dim lastRow As Long stRow = 5 lastRow = Range("F" & stRow).End(xlDown).Row For i = 4 To lastRow For J = 4 To 15 Cells(lastRow + 1, J).Select Cells(lastRow + 1, J).Value = Application.WorksheetFunction.SumIf(Range(Cells(stRow, "F"), _ Cells(lastRow, "F")), "金額", Range(Cells(stRow, J), Cells(lastRow, J))) Next Next これで、合計の欄にそれぞれの月の合計が出るようにはなったのですが、 入力値に変更を加えて再度計算をしたときに、 『一番最後のセルのしたに合計値を出す』としたため、 下に計算結果が(それも、すでに出ていた合計値を加算して)表示されてしまいます。 これを必ず合計の行に出していくには、合計の行が変化するため、 どのようなコードで書けば良いのかがわかりません。 よろしくお願いします。

  • エクセルで画面に表示されている数字を合計する方法。

    オートフィルターで抽出した表の値だけを合計する方法はありますか? 条件以外の物は一時的に見えなくなっていますが、表の下にある合計は全体表示の合計のままです。 例として A   100 A   150 B   200 合計  450 をオートフィルターを掛けて A   100 A   150 合計  250 としたいのですが、合計は450のままです。 どうすれば解決しますかお願いします。 

専門家に質問してみよう