ここから本文です

複数のエクセルファイルの集計方法

tet********さん

2012/2/1214:06:07

複数のエクセルファイルの集計方法

はじめまして。

添付のエクセルファイル(2003)で請求書を作成しており、年度ごとに集計したいと思っています。
集計したい項目は、
小計(F29)、(H29)と消費税(F30)と源泉所得税(F33)です。

これらの請求書ファイルと同一の書式の請求書の(F29)(H29)(F30)(F33)に
年次合計として各ファイルの(F29)(H29)(F30)(F33)の合計を書き込みたいのですが、
いい方法はないでしょうか?

なお、マクロは全くやったことがありません。

よろしくお願いいたします。

補足>エクセルファイルといっても、・・・
→1ブック3シートありますが、データがあるのはSheet1のみで2,3は空です。
参照するセルは数値を直接入力しているのではなくて計算式を入れています。

教えていただいた前提で問題なかったので、そのままマクロを実行すると、参照するファイル全部が開き、よさげな雰囲気なのですが、結局集計されません。(集計先ファイルの集計先セルは空欄のまま)

F30,F33,F29,H29,請求書,wb.Worksheets,F29&quot

閲覧数:
1,367
回答数:
1
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

vcx********さん

編集あり2012/2/1222:33:11

【補足】

シート状況、セル状況、実行環境も見えませんし、想像でしか答えられません。
集計転記されないとしたらセル座標が違うと想像します。もし対象のセルが結合セルなら、結合したセルの左上の座標が指定されていないとダメです。

先にも書きましたが、ご自分の環境に直せないならばマクロなど使わない方が無難ですよ。

一応、テストしたファイルを載せておきます。
解凍すると「テストフォルダ」というフォルダの中に4つのExcelファイルを展開します。

サンプル.zip
http://firestorage.jp/download/5436332debe4c724e8d87969d4d8adb61ef7...



【元の回答】

その都度、請求書ファイルを作っているだけで、元になる請求データをまとめたデータベースのようなものが存在していないって事でしょうか?
もしそうなら、根本的にそこを改めるべきな気がします。

---

手作業でやりたくないならマクロしか無いと思いますが、マクロを作るとなると色々な条件を考慮して作らねばなりません。
例えば、ひと言でエクセルファイルといっても、1ブック1シートなのか、1ブック複数シートなのかなど、条件によって処理方法は異なりますし、その他の様々な条件で想定しない動作、意図しない動作をする事があります。

自分の環境に置き換えて直せる程度の知識は当然必要ですし、良く解らないなら業務上でマクロを使うのは避けた方が無難かも知れません。

サンプルは下記前提で書かれています。

1)マクロは集計用ファイルに記載してある。
2)集計用ファイルと請求書ファイル(複数)のみが同じフォルダにあり、関係ないファイルは同フォルダには無い。
3)集計対象は全てのファイルで一番左にあるシートのみ

ALT+F11 で VBE画面を呼び出し、挿入で標準モジュールを追加してコードをコピペします。
試す場合はテスト環境で。

Sub Test()
Dim myPath As String, myFile As String, wb As Workbook

myPath = ThisWorkbook.Path
myFile = Dir(myPath & "\*.xls", vbNormal)
Do While myFile <> ""
If myFile <> ThisWorkbook.Name Then
Set wb = Workbooks.Open(myPath & "\" & myFile, ReadOnly:=True)
With ThisWorkbook.Worksheets(1)
.Range("F29").Value = _
.Range("F29").Value + wb.Worksheets(1).Range("F29").Value
.Range("H29").Value = _
.Range("H29").Value + wb.Worksheets(1).Range("H29").Value
.Range("F30").Value = _
.Range("F30").Value + wb.Worksheets(1).Range("F30").Value
.Range("F33").Value = _
.Range("F33").Value + wb.Worksheets(1).Range("F33").Value
End With
wb.Close False
End If
myFile = Dir
Loop
End Sub

質問した人からのコメント

2012/2/12 23:56:52

笑う ありがとうございます!結合セルの座標指定の問題だったようで無事できました!
いや~便利なものですね
あくまで個人事業で使いますので、あまりリスクを心配していませんでしたが
これから多少は勉強します!
本当に助かりました。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる