人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VBA:excelで複数のexcelファイルより特定の条件の行を指定して、その行内のセルの数値を合計して集計する方法について。

現場毎に取引先からの請求を集計する作業に追われております。
一つのフォルダ(たとえば「2月請求書まとめ」)に取引先毎のその月の請求書がまとまって置いてあります。以下の画像のように現場毎にコードを付与し、仕訳してあります。
この複数のファイルから、コードを元に(画像では現場コード1506002)金額を抽出し、合計したいと考えております。
この場合はどのようなマクロを書けばよろしいでしょうか。
宜しくお願いします。

1433922666
●拡大する

●質問者: cbc02379
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● きゃづみぃ
●0ポイント

http://okwave.jp/qa/q7054772.html

ほかのブックから VLOOKUPでもってくればいいと思いますよ。


2 ● a-kuma3
●500ポイント ベストアンサー

エラー処理とか端折ってますが、マクロを書いてみました。

Const TARGET_DIR = "D:\hoge\2月請求書まとめ\"' 請求書が置いてあるフォルダ
Const MAX_ROW = 1000

Sub 請求書集計()
 r2 = 5
 code = Cells(2, 1).Value

 fname = Dir(TARGET_DIR & "*.xlsx")

 Do While fname <> ""

 Set this_book = ActiveWorkbook
 Set target_book = Workbooks.Open(TARGET_DIR & fname)
 this_book.Activate
 r = 6
 
 Set s = target_book.Sheets(1)
 Sum = 0

 Do While r < MAX_ROW
 Set c = s.Cells(r, 1)
 If IsEmpty(c) Or c.Value = "" Then
 Exit Do
 End If
 place = ""
 If c.Value = code Then
 place = s.Cells(r, 2).Value
 Sum = Sum + s.Cells(r, 3).Value
 End If
 r = r + 1
 Loop

 Cells(r2, 1).Value = s.Cells(3, 1).Value
 Cells(r2, 2).Value = s.Cells(3, 2).Value
 Cells(r2, 3).Value = Sum
 
 target_book.Close SaveChanges:=False

 r2 = r2 + 1
 fname = Dir()
 Loop

 Cells(r2, 2).Value = "小計"
 Cells(r2, 3).Formula = "=SUM(C5:C" & (r2 - 1) & ")"

End Sub

以下のことを前提にしてます。
・集計する請求書が置いてあるフォルダには、請求書以外の .xlsx なファイルが無い
・集計結果の取引先コードの順序は気にしない

集計元のフォルダをマクロの先頭に書いてあるので、適宜変更してください。
フォルダの最後は \ で終わるようにしてください。


3 ● やじるし
●0ポイント

下記の方法はピッタリかと思います。
http://superdbtool.com/blog/archives/698
https://www.youtube.com/watch?v=MIgnOavutjs

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ