Excelマクロ初心者のための範囲集計方法

このQ&Aのポイント
  • Excel2007&windows7を使いマクロ作成中の初心者です。毎月データを追加入力し、年で締め切る表を作成しています。表の範囲内の特定の部門と月の合計値を知りたいです。また、他のシートに集計結果を表示したいです。
  • 表はF列からL列まで、6行目から580行(毎月変動)ぐらいの表です。H列には、A部門、B部門、C部門のいずれかの文字列が入ります。J列には、平成27年1月から12月までの年月が入ります。K列、L列には数値が入力されます。毎月作成する表の概要です。
  • やりたいことは、表に基づいて、例えば27年1月のA部門のK列とL列の合計、B部門のK列とL列の合計、C部門のK列とL列の合計を知りたいです。この合計結果を他のシートに表示したいと思っています。Excel関数でもExcel VBAでも実現したいです。=SUMIF関数を使って特定の部門と月の合計を求めることができますが、27年1月だけで集計し、他のシートに表示する方法を教えてください。
回答を見る
  • ベストアンサー

表のデータからある範囲の集計をしたい

1)Excel2007&windows7を使いマクロ作成中の初心者です。 2)シートに毎月データを追加入力し、年で締め切る表を作成しています。 3)表はF列からL列まで、6行目から580行(毎月変動)ぐらいの表です。 4)H列には、A部門、B部門、C部門のいずれかの文字列が入ります。 5)J列には、平成27年1月から12月までの年月が入ります。 6)K列、L列には数値が入力されます。 以上が、毎月作成する表の概要です。 そして、やりたいことは、この表に基づいて、例として、27年1月の表示される行の中の A部門のK列の合計、B部門のK列の合計、C部門のK列の合計を知りたいことと、 A部門のL列の合計、B部門のL列の合計、C部門のL列の合計を知りたいです。 この、合計の結果を、他のシートに表示したいです。 Excel関数でもExcel VBAでも、やりたいこと出来れば、どちらでもいいです。 =SUMIF(C17:C29,"A部門",F17:F29) 同一シート内で上の関数を、利用できますが、これに27年1月だけで集計したいです。 また、他のシートの中に表示したいです。どうしたらよろしいか教えてください。

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

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

丁寧なのは良いとして、質問文が長く、メモを取って整理しないと内容が理解できなかった。 下記を補足してください。 ーー 明確でない点は ・原データシートは月別(他の月分のデータは混じらない)で別シートになるのか。 ・年間では12か月分12シートがあるのか。 ・集計項目(A、B、Cごと)の月別シートは独立して作るのか。 ・年合計はシートに作るのか。 など、はっきり判らなかった。 ーー 月別データ1シートであれば、部門別(A,B、C別)の合計計数は=SUMIF(C17:C29,"A部門",F17:F29)でよいし、 他の月が混じっていても、SUMIFS関数(2007より増えた)で(月別、部門別)区分して合計できるだろう。 ーー コピー貼り付けなどの作業は必要かもしれないが、普通に関数を利用して、達成できるのでは。 VBAを持ち出すまでもないと思う。 関数、VBAのどちらでもよいといっても、回答者の問題でなく、受け取る側の質問者のVBAの勉強や経験による。 質問者は、試験問題の出題者の先生のような立場ではない。 この程度の課題ならエクセル関数の初歩的景観でできるのでは。 「あくまで質問者がやるのだ」という前提で、できない(行き詰まった)、むつかしい点があれば、そこを重点にして質問を記述し、質問すべきだ。自分でやろうとせず、丸投げ的に回答者を使おうというように見える。 質問者がエクセルVBAの中級にでもならなければ、手作業の多少の面倒さは辛抱せざるを得ないだろう。 ーー >27年1月だけで集計したいです 2月分のデータも混じっているということ? 月を超えても同一シートにデータを入力しているのか。 SUMIFS関数ではだめか。 ーー VBAでも関数(ワークシート関数という。SUMなど)つかえる。 例データ  B、C列 A 1 A 2 B 3 C 2 A 3 B 4 A 5 11 <ーーAだけの合計 コード 2行下同列に合計を出す場合 Sub test01() r1 = Sheets("Sheet1").Range("B1000").End(xlUp).Row Sheets("Sheet1").Range("C" & r1 + 2) = Application.WorksheetFunction.SumIf(Range("B1:B" & r1), "A", Range("c1:C" & r1)) End Sub

aitaine
質問者

補足

説明が下手で申し訳ございません。 データシートには以下のように入力されます。 27年1月 A部門 60  100 27年1月 A部門 66  112 27年1月 B部門 50  212 27年1月 C部門 75  515 以下12月までデータ入力します。 各部門の月当たり行数は30から60ぐらい使用します。 この1枚のデータから別のシートに計算結果の表を表示したいです。 以下のように。      A部門     B部門    C部門   ABC合計 27年1月  1250     6250     5620    13120 27年2月  2250     3250     1020     6520 以下12月まで・・。既にデータの入力済みのものは、計算結果を表示したいです。

関連するQ&A

  • VBAで範囲を有するセルの記載位置を入れ替える

    お世話になります。 あるデータを扱うため、sheet_1に以下のような表を作成し管理を行っております。 sheetは複数存在するので、敢えてsheet_1とします。 (sheet_1)      B列ーC列ーD列ーF列ーG列ーH列ーI列ーJ列ーK列ーL列・・・  3行  A   A   A   A   B   B   B   B   C   C  4行  A   A   A   A   B   B   B   B   C   C  5行  A   A   A   A   B   B   B   B   C   C  6行  A   A   A   A   B   B   B   B   C   C  7行  F   F   F   F   G   G   G   G   H   H  8行  F   F   F   F   G   G   G   G   H   H  9行  F   F   F   F   G   G   G   G   H   H 10行  F   F   F   F   G   G   G   G   H   H 11行  K   K   K   K   L    L   L   L   M   M 12行 以下、上記のように続く 4列毎×4行毎の16セル分の範囲を1情報として扱っているのですが、VBAを利用して記入された横方向の情報を下部行(例えば150行目)で縦に置き換える方法をご教授いただきたく投稿致しました。 変換元の対象範囲はB3:BM126です。 (sheet_1)       B列ーC列ーD列ーF列ーG列ーH列ーI列ーJ列ーK列ーL列・・・ 150行  A   A   A   A   F   F   F   F   K   K 151行  A   A   A   A   F   F   F   F   K   K 152行  A   A   A   A   F   F   F   F   K   K 153行  A   A   A   A   F   F   F   F   K   K 154行  B   B   B   B   G   G   G   G   L   L 155行  B   B   B   B   G   G   G   G   L   L 156行  B   B   B   B   G   G   G   G   L   L 157行  B   B   B   B   G   G   G   G   L   L 158行  C   C   C   C   H   H   H   H   M   M 159行 以下、上記のように続く 同一sheet内ではなく、新たにsheetを作成して同じ結果を求める方法でも構いませんので、恐れ入りますがご教授宜しくお願い致します。

  • 集計表の作成

    集計表の作成 AccessとExcelを使用して集計Aを作成したいと思っています。 (ボタン1クリックだけで行なうのが理想です) 1.グループ毎に小計行を追加したい(小計行はグループ毎の合計 2.エクスポートしたExcelの最終に合計行の追加したい (合計行は全グループの合計) A列はデータ数によって毎回行数が変わる為にあらかじめレイアウトを 作成して、Vlookuopで当てはめるという事も出来ません。 元となる金額のデータはAccessで作成してExcelにエクスポートする 所までは出来たのですがそれ以降(小計行の追加・計算、合計行の追加・計算)が分かりません。どの様にすればよいでしょうか? Access:仕入先テーブル コード |テキスト型 名称 |テキスト型 仕入額 |数値型 前年比 |数値型 グループ |数値型 Excel:集計A A | B | C | D | E | F | 1 |コード | 名称 |仕入額 |前年比|グループ| 2 |1030 | A | 1,000 | 49%|1 | 3 |1040 | B | 1,050 | 32%|1 | 4 | |小計(A+B) | 2,050 | 81%| 5 |1050 | C | 1,000 | 50%|2 | 6 |1060 | D | 1,050 | 52%|2 | 7 |1070 | E | 1,050 | 49%|2 | 8 | |小計(C+D+E)| 3,100|50.3%| 9 |1080 | F | 1,000 | 60%| | 10|1090 | G | 2,000 | 38%| | 11|2000 | H | 1,000 | 60%| | ・ ・ ・ ・ | |合計 | 9,150 |49% | ・・・C4+C8+C9+合計行の直前まで

  • Excelでの別シート集計について

    Excelで月別、項目別で時間を集計するシートを作成しようとしています。 シート2ではシート1 F列コード別に集計してD列の時間データを月別に合計 シート3ではシート1 F列コードとG列コード別(Fが1001でGが1001、、、)に集計してD列時間データを合計、という表データにして抽出したいと考えています。 シート1には K欄に年月を表示  =IF(OR(A7="",B7="",C7=""),DATE(2100,12,31),DATE(A7+2000,B7,C7)) L列にF列コード+年月  =F7&(2000+A7)&B7 M列にG列コード+年月  =G7&(2000+A7)&B7 というところまでは設定したのですが、出力先となるシート2、シート3にはどのような設定をすればよいのか行き詰っています。 なにとぞ易しい回答をよろしくお願い申し上げます。

  • 集計表をエクセルで作成したい。

    エクセルで下記のような表を作成したいと思っていますが可能でしょうか、御教示お願い致します。 1.「シート1」のA列に日付・B列に客先コード・C列に客先名・D列に金額・E列に取得ポイントを入力します 2.行に発生順で入力します。その為、同じ客先コードが不規則に発生(入力)します 3.「シート2(1月分)」に、B列の客先コード別(C列に客先名も表示させる)にD列の金額・E列の取得ポイントを合計した一覧表を作成したい。 さらに、入力した時点で合計・更新をしたい 4.2月になれば「シート1」の1月分のデータを削除し2月分のデータ入力に使用したい よろしくお願い致します。

  • エクセルで集計

    エクセルでの合計について教えていただきたいのです。 A1~A10000まで日付が、B1~B10000まで数値が入力されています。 B列の数値を50行ごとに合計し、C列に表示する方法。 現在は、sum関数で手作業です。 簡単に表示できる方法を教えてください。 また、C列に合計のある行をD列(D1・D2・D3・・・)、E列(E1・E2・E3・・・)、F列(F1・F2・F3・・・)に並べたいのです。(50行ごとに間引いて表示するような感じです) 現在は、=C50・=C100・=C150のように手作業です。 もっと多量のデータが入力されたシートもあります。また、100行ごと150行ごとなど合計行が違う場合もあります。 エクセル初心者です。 よろしくお願いいたします。

  • 表を指定範囲内にコピーする

    シート1で表を作りコピーボタンを押すと、その表を別のシートにコピーするにはどうすればいいのですか?(コピーボタンは、シート1内にある物とする)条件として、別のシートのC列~N列の間で最終行の次の左端にコピーするものとする。また、C列~N列以外にデーターがあっても関係ないものとする。例、シート1の表(B1~L24)をシート2にコピーするとする。シート2を見るとA20,F15,P18にデーターがあります。A20とP18はC列~N列の範囲外で範囲内にあるセルF15によりセルC16からコピーするにはどうすればいいですか。また、実際には、シート2のデーターは決まっていません。 よろしくお願いします。

  • エクセル関数を使った集計

    添付ファイルの様に、エクセルのsheet1と2に同様の表があります。sheet1に於いて A列が四角になっているC列の番号と同じ番号を、sheet2のC列を検索し、 その中で、B列がSになっている件数と、その行のD列の合計を求める 関数式を教えて下さい。(実際の表自体は3000行ぐらいあります) 例で求めたい結果は 件数=2件、合計=11,000- になります。 以上宜しくお願いします。

  • Excel 2007 マクロ 表の集計について

    Excel 2007 マクロ 表の集計について 2つのシート(Sheet1とSheet2)の情報を集計して Sheet3に反映するマクロを考えています。 (1)Sheet1のC列、D列、E列とSheet2のC列が空欄の場合は  Sheet3に反映しません。 (2)Sheet1のC列、D列、E列とSheet2のC列のいずれかに数値が  入っている場合にはSheet3に行を反映します。  ※Sheet3に反映する際に、Sheet1とSheet2のキー(A列)は  反映しません。  各Sheetの表は画像を添付します。  どのようなマクロを作成すればよろしいでしょうか。  マクロの超初心者です。  マクロのサンプルをご紹介頂けますでしょうか。

  • データ転記。うまく転記できないシートがあります。

    エクセルのデータ転記について助けてください。 現在 エクセルで職場で使用する現金出納帳を作成中です。完成間近なのにつまずいてしまいました。 作成にもう長い時間かかっるので今週中になんとか仕上げたいのです。 (職場での周りの目がこわくって・・・) どうかどうかよろしくおねがいします。 *各シートの説明 【シート1(元帳)】は記入用シート(1年間の経費等の入力をします) A1は表題 2行目はタイトル行で B列:月日、C列:曜日、:D列:経費部門コード(以下部C)、E列:経費部門名(D列の部C入力時に他シートにあるデータベースからLOOKUPで抽出して表示するようにしてます) F、G列は手入力用の内訳や備考の列、H列:収入金額、I列:支払金額、J列:差引残高。(I・J列は転記必要なしです) データはB3(日付)から入力します。 データ表の範囲はとりあえず100行目まで(A1からJ100) 【シート2~シート16(シート名はD列の経費部門コード番号です)】 こちらが転記先シートです。 A1に部門コード、B2に部門コード名(A1のコードでデータベースより抽出)2行目はB列:月日、C列:曜日、D、E列:内訳、備考、F:支払金額 【シート17(経費部門コードのデータベース)】 部門番号と部門名を表にして 元帳で入力の際 ここからひっぱってくるようになっています。 番号は15種類(経理上不規則な番号):1・2・4・5・6・7・8・9・10・12・20・21・22・仕・給(これをシート名にしてます) *希望する完成仕様 元帳(シート1)に入力したデータが同時に部門C別シート(15種類)に必要な項目だけ転記される。必要な項目は上記のシート説明参照。 *現在の作成状況 ・元帳のシート A3に'=COUNTIF($D$3:D3,D3)&D3 以下 A列はA3をコピー ・15枚の部門番号のシート B3(転記初期行)に'=IF(ISERROR(VLOOKUP(ROW(元帳!A1)&$A$1,元帳!$A$1:$I$100,2,0)),"",VLOOKUP(ROW(元帳!A1)&$A$1,元帳!$A$1:$I$100,2,0)) C3,D3,E3,F3列はB3をコピーしLOOKUPの列番号を変更 *現在の状況と問題点 シート4・5・6・7・8・9・10・12・20・21・22はきちんと転記する。 シート1(部門C:1)は部門C:1と部門C:21のデータが転記されてしまう シート2 (部門C:2)は部門C:2と部門C:12と部門C:22のデータが転記されてしまう。 この2つのシートは 下1桁でひっぱってきてしまってるのは分かるのですが改善方法が分かりません。 どうかこの2シートがきちんと動く数式を教えていただけるでしょうか? 文章力不足のため 質問の理解にさぞ悩まれるでしょうがどうぞよろしくお願いします。 補足:01 02 04と 二桁でもしてみましたが反応は同じ。 よく分からなくて セルの表示変えても値は1・2・4になってしまうんです・・。 結局よく分かりませんでした。

  • 複数の条件を満たすレコードの合計を求める

    出荷日 品名 数量 単価 合計 担当者 部門 5/2  もも  1  100  100 A   14 5/3  珈琲  2  150  300 B   15 5/4  ばなな 3  100  300 C   14 1行から100行位の表があってそのつど入力していき、(5月分の表としてありますので、100行全て埋まる訳ではありません)別のシートに   A列  B列    C列    D列 1     A担当者  B担当者  C担当者 214部門 100     0      300 315部門  0     300     0 という表になるようにB2セルに次の式を入れました =sumproduct((sheet1!$G$2:$G$100=$A2)*(Sheet1!$F$2:$F$100=$B1)*sheet!$E$2:$E$100)) で入れるとNAME?になります。100と入れているところを今現在入力されている行数を入れると合計が表示されます上の表ではG2:G3と入れると合計が出ますが、毎日毎日データーが更新されているのでそのつど関数を入れなおせません。 どなたか、良い案を教えてください 長くなってすみません 

専門家に質問してみよう