ここから本文です

EXCEL VBAのエキスパートの方にご相談させて下さい。 添付画像のフォーマットの...

tad********さん

2020/4/1014:00:02

EXCEL VBAのエキスパートの方にご相談させて下さい。

添付画像のフォーマットのファイルの、
年月日の1行下の「RINGO」の値を拾って合計したいです。

inputboxで、「2019/2/28~2020/9/30」と入力したら、
黄色のハイライト部分を合計し、
集計先の別ファイルに出力してくれるようなコードを組みたいです。

※画像の下の方は見えませんが、2049/12/31まであります

同じformatのファイルが40程度あり、いずれもシート名は”集計”です。
この40ファイル分を集計先の別ファイルで合計したいので、
例えばA列にファイル名、B列に合計値、を出力させたいです。

どなたかご教授いただけませんでしょうか。

Excel VBA,InputBox,Book3.xlsm&quot,エキスパート,別ファイル,フォーマット,B&quot

閲覧数:
93
回答数:
1

違反報告

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

プロフィール画像

カテゴリマスター

2020/4/1014:36:36

○~○ で入力させると、「~の右と左で...」とめんどくさいので、開始日と終了日を別に入力させた方がいいかもです。

Sub test()
Dim buf As Range
Dim cnt As Long
Dim fname As String, fld As String
Dim abcD, xyzD
Dim sh As Worksheet

Application.ScreenUpdating = False

Do '開始日を入力させる
abcD = InputBox("開始日を入力してください(yyyy/m/d形式)。")
If abcD = Empty Then Exit Sub
Loop Until IsDate(abcD)

Do '終了日を入力させる
xyzD = InputBox("終了日を入力してください(yyyy/m/d形式)。")
If xyzD = Empty Then Exit Sub
Loop Until IsDate(xyzD)

Set sh = Workbooks("Book3.xlsm").Sheets("集計結果") '集計結果を入力するシート
fld = "D:\test" 'データファイルのあるフォルダ
fname = Dir(fld & "\*.xls*")

Do While fname <> "" 'ファイルを順番に開いて処理
Workbooks.Open fld & "\" & fname, ReadOnly:=True, UpdateLinks:=False
With Sheets("集計")
For Each buf In .UsedRange
If buf.Value >= CDate(abcD) And CDate(xyzD) >= buf.Value Then
If .Cells(buf.Row + 1, "B") = "Ringo" Then _
cnt = cnt + buf.Offset(1)
End If
Next buf
sh.Cells(Rows.Count, "A").End(xlUp).Offset(1) = ActiveWorkbook.Name
sh.Cells(Rows.Count, "B").End(xlUp).Offset(1) = cnt
cnt = 0
.Parent.Close False
fname = Dir()
End With
Loop

Application.ScreenUpdating = True
MsgBox "END"
End Sub

修正箇所は3箇所。
Set sh = Workbooks("Book3.xlsm").Sheets("集計結果") '集計結果を入力するシート
fld = "D:\test" 'データファイルのあるフォルダ
If .Cells(buf.Row + 1, "B") = "Ringo" Then _

これ見て何が何だかわかんなかったら、他の方の返答をお待ちください(´・ω・)

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

2020/4/11 09:55:03

完璧にできました!
勉強させていただきありがとうございました。

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

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

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

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

閉じる

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

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

閉じる