[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『複数ブックのSUM』(AI)
こんにちは。基本的な事もわからないのでを教えて下さい。
日報ファイルが30日分あり、月報ファイルにその合計を入力したいです。ブックをまたいでの繰り返しのSUMはどうやったら良いのでしょうか。
シート名は同じ、日報ファイルは全て同じフォルダに入っています。数値はA4から30行入っています。
日計
13
14
28
1
13
22
12
0
11
宜しくお願いします。
< 使用 Excel:Excel2010、使用 OS:Windows10 >
各ファイルのSheet1のA4:A33までの合計をB列、A列にファイル名を抽出
ということで
Sub test() Dim myDir As String, fn As String, n As Long Const wsName As String = "Sheet1" '<----要変更 With Application.FileDialog(msoFileDialogFolderPicker) If .Show Then myDir = .SelectedItems(1) & "\" End With If myDir = "" Then Exit Sub Columns("a:b").Clear fn = Dir(myDir & "*.xls") Do While fn <> "" If fn <> ThisWorkbook.Name Then n = n + 1 Cells(n, 1).Value = fn Cells(n, 2).Value = ExecuteExcel4Macro("sum('" & myDir & "[" & fn & "]" & wsName & "'!r4c1:r33c1)") End If fn = Dir Loop End Sub (seiya) 2019/07/23(火) 20:54
元ファイル
ファイル1〜ファイル30
数値がA3からA33に入っていて、その合計を別の「集計ファイル」のA3からA33に入れる。
説明が下手ですいません。
(AI) 2019/07/23(火) 21:05
新規ブックにコードを貼り付けて、一旦どこかに保存してから実行すれば何がどうなるのか目で見ればわかるはず。 (seiya) 2019/07/23(火) 21:18
ファイルDのSheet1のA3セルに
ファイルAのSheet1のA3セル+ファイルBのSheet1のA3セル+ファイルCのSheet1のA3セル
ファイルDのSheet1のA4セルに
ファイルAのSheet1のA4セル+ファイルBのSheet1のA4セル+ファイルCのSheet1のA4セル
・・・・・・・・・・以下A33 まで
の結果を出したいということでしょうか?
(渡辺ひかる) 2019/07/24(水) 14:40
>思った通りの結果になりませんでした… あなたの「思った通り」って何ですか? 理解できるように具体的に説明してください。
ファイルD?って何ですか?
さっぱりわかりません... (seiya) 2019/07/24(水) 14:44
(もこな2) 2019/07/24(水) 19:30
Dファイルにコードを貼り付けて実行
Sub test() Dim myDir As String, fn As String, n As Long, i As Long Const wsName As String = "Sheet1" With Application.FileDialog(msoFileDialogFolderPicker) If .Show Then myDir = .SelectedItems(1) & "\" End With If myDir = "" Then Exit Sub Columns("a:b").Clear fn = Dir(myDir & "*.xls") Do While fn <> "" If fn <> ThisWorkbook.Name Then n = n + 1 For i = 4 To 33 Cells(i, 2).Value = Cells(i, 2).Value + Val(ExecuteExcel4Macro("'" & _ myDir & "[" & fn & "]" & wsName & "'!r" & i & "c1")) Next End If fn = Dir Loop End Sub
(seiya) 2019/07/24(水) 19:57
>ドライブの指定? どこ?
>書き換えが必要な箇所は何処でしょうか? どこ? (seiya) 2019/07/24(水) 20:06
詳しい説明が無いから当初 > 各ファイルのSheet1のA4:A33までの合計をB列、A列にファイル名を抽出 という条件でコードを作成。
どのフォルダにファイルがあるのかわからないから、フォルダを選択させるコードを提示。 抽出先の詳しい指定も無いので、こっちで勝手に想定。
コードを実行して、ここをこうし欲しい、ここが違う等のコメントがあると思ったけど、
>思った通りの結果になりませんでした
実際にシートを見てるのはあなただけなのです。 他の人に正確に伝える努力をするのは質問者の仕事ではないのですか? (seiya) 2019/07/24(水) 20:25
箸休めに提供します。興味があればステップ実行して研究してみてください。
(実データを用意してテストはしてません。コンパイルエラーにならないことのみチェック済です)
>日報ファイルは全て同じフォルダに入っています。
>シート名は同じ、数値はA4から30行入っています。
↑の条件に加え、
・マクロは月報ファイルに記述
・月報ファイルも同じフォルダに入っている
・フォルダ内に日報ファイル、月報ファイル以外のExcelブックは入っていない
という場合、で隠居じーさんさんがおっしゃってることをコード化するとこんな感じではないでしょうか。
Sub 研究用() Dim ブック名 As String
Stop 'ブレークポイントの代わり
ブック名 = Dir(ThisWorkbook.Path & "\" & "*.xls?")
'ループ処理 Do Until ブック名 = "" If ブック名 <> ThisWorkbook.Name Then With Workbooks.Open(ThisWorkbook.Path & "\" & ブック名)
'コピー .Worksheets("同じ").Range("A4").Resize(30).Copy
'値 加算で貼付 ThisWorkbook.Worksheets("同じ").Range("A4").PasteSpecial _ Paste:=xlPasteValues, Operation:=xlAdd
'開いたブックを閉じる .Close
End With End If Loop
End Sub
なお、Dir関数の場合、ネットワークフォルダなどでフォルダ階層が深い場合、うまく動作しないので、別プランを考える必要があります。
(もこな2) 2019/07/24(水) 20:38
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.