• ベストアンサー

EXCELに関する質問

いつもお世話になってます。 EXCELファイルの同じフォームに入力された月別の作業工数集計表があります。 月毎なので、1年間でファイルが12個できます。 例えば全てのファイルでC1~C10に各作業項目の1ヶ月の合計時間があって これを年度末集計したいのですが、マクロ等で簡単に集計出来ないでしょうか?

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.5

どなたもマクロでの方法はお答えになってないようですので・・・・。 集計先のファイルの標準モジュールに以下をコピペ 集計用のシートを「集計」という名前にしておいてください。 集計元のファイルは各、1枚目のシートに1ヶ月の合計があるものとします。 Sub test() Dim mb As Workbook, wb As Workbook Dim myfdr As String, fname As String Dim n As Integer, x As Integer Application.ScreenUpdating = False '画面更新を一時停止 Set mb = ThisWorkbook myfdr = ThisWorkbook.Path ' Path取得 fname = Dir(myfdr & "\*.xls") 'フォルダ内のExcelファイルを検索 With mb.Sheets("集計") Do Until fname = Empty '全て検索し終えると、fname = Empty となるので、その間以下を実行 If fname <> mb.Name Then 'ファイル名がこのファイルじゃなければ Set wb = Workbooks.Open(myfdr & "\" & fname) '選択したファイルを開く wb.Sheets(1).Range("C1:C10").Copy 'C1:C10をCopy .Range("C2:C11").Offset(0, n).PasteSpecial Paste:=xlPasteValues '集計シートのC2:C11に値を貼り付け Application.CutCopyMode = False .Range("C1").Offset(0, n).Value = wb.Name '集計シートのC1に貼り付け元のファイル名 .Range("C12").Offset(0, n).FormulaR1C1 = "=SUM(R[-10]C:R[-1]C)" '縦の合計 n = n + 1 'カウント wb.Close '選択したファイルを閉じる End If fname = Dir '選択したフォルダ内の次のExcelファイルを検索します Loop '繰り返 x = Range(.Range("C1"), .Range("C1").End(xlToRight)).Columns.Count '列数取得 .Range("C2:C12").Offset(0, n).FormulaR1C1 = "=SUM(RC[-" & x & "]:RC[-1])" '横の合計 End With Application.ScreenUpdating = True '画面更新一時停止を解除 MsgBox n & "件のブックのC1:C10を転記&集計しました。" End Sub

その他の回答 (5)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.6

No5です。 書きもれました。 集計先のファイルと、集計元の12個のファイルは同じフォルダーにいれてください。そのフォルダーには他のエクセルのファイルは入れないで下さい。同じフォルダー内の、集計先以外の全てのエクセルファイルを順次開き、各1枚目のシートのC1:C10を集計先に持ってくるマクロになっていますから

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.4

あの~ 特段フルパス指定しなくても セーブしてるエクセルのファイルならば 当該ブックを開いておき、対象セルをクリックするだけで 参照先ファイルが閉じられたときに エクセルが勝手にフルパスを読み出して フルパス指定に変えてくれると思いますよ? パス指定するなとしたら相対参照パスでしょうかね 口幅ったいことを言って済みません <( _ _ )>

noname#153814
noname#153814
回答No.3

同じセル位置にあるデータを合計するのは簡単です。 「1月」から「12月」の「セルA60」の数値を「年報」に合計するときは、まず「年報」を開き、合計を入れたいセルを選択して、=SUM( と入力します。 そしてそのままシフトキーを押し、「1月」のシート名をクリックします。続いて「12月」をクリックします。続いてセルA60をクリックするだけで答えが書かれます。 =SUM(1月:12月!A60)と表示されるはずです。

  • pauNed
  • ベストアンサー率74% (129/173)
回答No.2

こんにちは。 ファイル名をフォルダからフルパスで設定してあげれば、必ずしも開いておく必要はないですネ。 例えばDドライブの TEST というフォルダにあれば ='D:\TEST\[Book1.xls]Sheet1'!$C1+'D:\TEST\[Book2.xls]Sheet1'!$C1+'D:\TEST\[Book3.xls]Sheet1'!$C1...続く となります。 ただ、フォルダの階層が深ければ複雑になるので、一旦作業列に各ファイルの値を参照して、 それを合計したほうが良いかもしれません。

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.1

マクロは不要です。 他のファイル(ブック)を参照するだけですのでマクロを設定する必要はありません。 (ファイルを全て開いておく必要がありますが)  Book1のSheet1のA1に"1"  Book2のSheet1のA1に"2" と数値が入力されているとき、Book3の適当なセルに  =[Book1]Sheet1!A1+[Book2]Sheet1!A1 と数式を設定するとBook1とBook2のSheet1A1から数値を参照して "3"と和を表示します。 この様に他のファイル(ブック)を参照して計算ができるので工夫してみてください。 ※月ごとにシートで分けてあれば複数のファイル(ブック)を開く必要はないんですけどね。

関連するQ&A

  • エクセルデーター集計について

    現在1月から12月まで各月毎のシートと集計表があります。 そのシート内の集計表は  A  ・   B     ・ C ・ D ・ E ・・・・・・・・BB 1担当・顧客ナンバー・日付・苗字・名前・・・・・・・・ 2田中 3佐藤 4小川 5田中 6田中 7佐藤 8井上 ・ 150位まで(行については月により変動あり) と各列と行にデータが入力されてます。 担当者は12名で元になるデータ表には活動順に担当者名が入力されてます。 やりたい事は (1)各担当別の月別集計と年間集計シート作成 月毎にシートを作成でなく、あくまで担当者毎の月毎集計と12か月の年間合計転記を同一シートにする事は可能でしょうか。(個人成績表の為) またその時担当別にシート作成が出来るとうれしいです。 (2)全担当者の月集計一覧シート 一つのシートに全担当者の月別集計(1月から12月)を一覧にしたいのですが、各担当者の月別合計欄を転記の認識なのですが、他にいい方法もありますか? (3)全担当者の年間集計一覧シート (2)の合計を転記の認識です。他にありますか? 以上3点を作成したいと思ってます。 (1)が出来れば何とかなるような気はしますが、どなたかご教授お願い致します。 項目はA~BBまで横一列にあり 担当者の入力も横一列なのでvlookupでも考えましたが、マクロで何とか出来るなら挑戦してみようかと思ってます。 集計表自体他のブックからのリンクやなんやらで20M位ファイルサイズがあり、今回の(1)(2)(3)は新規ブックに作成したいと思います。

  • エクセルのマクロについて

    エクセルのマクロについて教えてください。 毎月、データをダウンロードし、VLOOKUP関数などを使って、 必要項目を入れ、ピポットテーブルで合計を出すという 作業をしています。マクロを使ったら、簡単にできるのでは ないかとやってみましたが、マクロで登録しても 毎月集計をするデータの件数が異なるため、 VLOOK関数で入力されるのが、そのマクロで登録したときの ものまでで、残りのセルが空欄になっていたり、 ピポットテーブルの集計は、データの範囲を選びなおしたり しないといけませんでした。 いい方法はないでしょうか。 マクロに作業を記録して、そのシートではなく、 ほかのファイルのシートで 実行する場合は、そのマクロを登録したときのファイル(シート)を 毎回開かなければならないのでしょうか。 基本的なことがわかっていません。 教えてください。

  • エクセル 集計について教えてください!

    エクセルで、特定の列に該当する条件に当てはまる数を数えたい時、 どの関数を使えばいいでしょうか。 エクセル得意な方、教えてください。 たとえば、 A列=果物名(もも、りんご、みかん、ぶどう…etc) B列=仕入れた店名(全国各地の店名) C列=仕入れた個数 D列=入荷した日にち を、日ごとに年度でまとめたエクセル表あるとします。 別シートに、 果物ごとに、月別でいくつ仕入れたか、集計したい時にはどの関数を使えばいいでしょうか。 A2、A3、…~果物名 B2行、C2行、…~各月 として、仕入れた数を合計する、という表にしたいです。 (どの店で、という条件は不要です) SUMIFSを使えばいいのかなと思ったのですが、 月別の条件になると、別の関数もいるのかとか、 ただ数を数えるなら、COUNTIFでいいのかとか、色々考えていたら、 どう組み合わせればいいかわからなくなりました…。 オートフィルタやマクロではなく、関数で作りたいのです。 教えてください。 どうぞよろしくお願いします。 ちなみに、エクセルは2010を使っています。

  • エクセルに関する質問です

    エクセルで、下記の項目を自動で表示させるようにする良い方法を教えてください! 添付の写真のような表があったとします。 この表の項目には、 ・購入日 ・購入金額 ・販売日 ・販売金額 ・利益 ・利益率 があります。 商品を仕入れたがまだ販売出来ていない場合(残在庫品)は、 販売日・販売金額・利益・利益率の項目は空欄のままです。 この表の毎月の下記の項目を、別シートで自動で表示させるようにしたいのです。 ★月別購入金額合計 ★月別販売金額合計 ★月別利益額合計 ★月別利益率 いつ見ても、すぐに○○月の購入金額合計はいくら、○○月の利益額はいくら、等、 常に把握しておきたいのです。 購入(仕入れ)だけして販売出来てない金額も、月別購入金額合計には反映させる必要があります。 面倒な質問とは思いますが、 詳しい方ご教授お願い致します!

  • エクセルについての質問です(2)。

    エクセルで下記のような当日の販売集計表ファイルがあった時に、まったく別の全集計ファイルの当日日付の列に自動的に合計が記入されるようにマクロをつくりたいのです。 (10月2日の場合)   A   B   C 1品名  合計  日付 ←タイトル 2鉛筆  7   1002 3定規  1   1002 4メモ帳 5   1002 ・このような当日の集計の数字を全集計の方に記入する↓   A  B    C   D    E 1品番 品名 在庫  販売数  1001  1002 ・・・ ←タイトル・日付 2   たこ 10    9   2  7 3   いか  5    4   3  1 4   なす 10    7   2  5 5   大根  5    2   2  0 ・ ・ 説明: ・当日のものをその日付の列に合わせて入れます。 ・品名は実際にはたくさんあります(同じ品名はありません)。 ご存知の方何卒ご教授下さい。宜しくお願いいたします。

  • エクセル 入力フォームのデータを別シートに書き込む

    エクセル 入力フォームのデータを別シートに書き込む方法 1.シート1のA2に日付、B2に文字列、C2に金額、D2に個数、E2に合計金額を入力する。 2.内容確認後、入力ボタンを押すと、 Sheet2の集計表リンクさせ、尚且つシート2内で1か月分の集計を取ります。 つまりシート1は入力シートで、同じセルに値を入力します(次回はデータが上書きされる)が、シート2では、集計表の1列ずつ下に新しく記録され1か月分の入力がされていく。 このような入力フォーム(マクロ)を作りたいと思っています。 初めて投稿するので、質問がよく分からないかもしれませんが、 よろしくお願いします。

  • エクセルの集計機能のマクロ

    会社の従業員にアンケートをエクセルで送付し、所定の表に回答を入力してもらい、そのエクセルを全従業員(50人)から回収するということを実施しました。 回答フォームは以下の通りでして、同様のフォームに記入された回答が50個のエクセルファイルとして存在します。 配布されたエクセルのフォームは 従業員No. 質問1  質問2   1      ○    A といった横3列、縦1行の表となっています。 各人のフォームが同じですので、これを50人分自動集計できるマクロを作成したいと思っています。集計したいイメージは以下の通りです。 従業員No. 質問1  質問2   1      ○    A   2      ×    D   3      ○    C  (間、省略)   50      ×    B       上記のように自動集計するマクロを作成したいのですが、どのようにプログラミングすればよいか分かりません。 いろいろなサイトを見ましたが、奈何せん初心者ですので理解できませんでした。 どなたか分かる方がいらっしゃいましたら、具体的なプログラムをご教授いただけませんか。

  • 【エクセルVBA】エクセルファイル間で表のコピーと貼り付け

    そもそも出来るかどうか、わかりませんが、 もしかしたらと思い、質問させていただきました。 2つのエクセルファイル「個別」と「合計」があるとします。 「個別」はCドライブの「所属者」フォルダに 「合計」はCドライブの「集計」フォルダにあるとします。 「個別」ファイルには以下のような表とコマンドボタンがあります。 A1 A2・・・はセルの位置を表しています。    A1 A2 A3 B1 B2 B3 C1 C2 C3 コマンドボタンをクリックすると、この表と同じ内容が 「合計」ファイルの以下の位置に移動するようにしたいです。    E1 E2 E3 F1 F2 F3 G1 G2 G2 要するに「個別」ファイルにある表をコピーして、 「合計」ファイルの指定した位置に貼り付けるという操作を マクロを使ってコマンドボタンをクリックすることで 自動に行えるようにしたいのです。 もし可能ならば、 どのようにコードを入力するべきか教えてください。 マクロに関しては素人ですので、 できれば入力すべきものをそのまま回答していただけると ありがたいです。

  • エクセルでの集計について

    エクセルでの集計について質問です。 【4月】 (営業A)              (営業B) A     B       C      D       E      F 会社名  品名   売上金額  会社名  品名   売上金額 ○○   ××   ¥10,000   □□   △△   ¥50,000 □□   ■■   ¥30,000   ★★   ○○   ¥20,000 ○○   ☆☆☆  ¥50,000   ○○   ???  ¥30,000 上記のように1枚のシートに営業さんごとに分けて月別の売上表を作っています。 最後のシートに個人ごとの年間売上げ表を作りたいのですが、 【年間合計】      (営業A)   (営業B) A      B      C       会社名  売上金額  売上金額 ○○   ¥60,000  ¥30,000 □□   ¥30,000  ¥50,000 ★★   ¥0     ¥20,000 上記のように会社名ごとに年間合計を作る場合にはどのような方法がありますでしょうか?(年間合計に品名は必要ありません) SUMIFを入力してみたら、ものすごく式が長くなってしまいました… 他に方法がありましたら宜しくお願いします。

  • エクセルでの集計について

    初心者です。 エクセルでの集計について教えてください。 sheet1にプルダウンやフォームで入力し、sheet2へ集計させたいのですがやり方がわかりません。 例えばプルダウンの場合、sheet1のA1で都道府県を選ぶとB1には対応する市町村が選択できるようにします。C1には任意で数字を入力していくとします。それを何行か入力します。はsheet2に、A列には都道府県別、B列にはAに対応する市町村、C列には任意の数字が合計されるようなことをしたいのですが・・・。こんな説明でご理解いただけるか心配ですが、なんとかやさしくお教えください。(フォームでの入力がスマートで格好がよさそう・・・。)マクロ等々もぜひともやさしくお教えください。

専門家に質問してみよう