
日付と入荷予定数が記載された一覧表のSHEET(SHEET名:集計表)があります。
(商品名もありますが、特にマクロ起動の際は使用しません)
それとは別に管理表のSHEET(SHEET名:管理表)があり、それには横軸方向に日付があり、その下にその日付で入荷予定の総数を記入する予定です。
集計表の日付、入荷数を抽出し、管理表に各日の総数を記入するようなマクロを組みたいです。
日々入荷予定数が変わるので、日々管理表への総数変更(更新)をしたいため、マクロで自動化したいです。
もし難しい構文になりそうでしたら、簡単でもいいので説明を記載していただけると非常に助かります。
よろしくおねがいします。


No.9ベストアンサー
- 回答日時:
No6です。
以下のマクロを管理表.xlsmに登録してください。
Const folder_name As String = "d:\goo\excel" '集計表.xlsmの格納ホルダ
が 集計表.xlsmの格納ホルダです。あなたの環境にあわせて適切に設定してください。
集計表.xlsmは必ず、クローズした状態で、マクロを実行してください。
--------------------------------------------------
Option Explicit
Public Sub 総数更新()
Const folder_name As String = "d:\goo\excel" '集計表.xlsmの格納ホルダ
Const book_name1 As String = "集計表.xlsm"
Const book_name2 As String = "管理表.xlsm"
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim maxrow1 As Long
Dim maxcol2 As Long
Dim row1 As Long
Dim col2 As Long
Dim diff As Long
Dim date0 As Date
Set sh2 = Worksheets("管理表")
maxcol2 = sh2.Cells(2, Columns.Count).End(xlToLeft).Column '2行目の最終列取得
'総数クリア
sh2.Range("B3:B" & maxcol2).Value = ""
date0 = sh2.Cells(2, "B").Value
If Day(date0) <> 1 Then
MsgBox ("B2の日付が1日でない")
Exit Sub
End If
Application.ScreenUpdating = False
Workbooks.Open (folder_name & "\" & book_name1)
Workbooks(book_name1).Activate
Set sh1 = Worksheets("集計表")
maxrow1 = sh1.Cells(Rows.Count, "C").End(xlUp).Row 'C列の最大行取得
For row1 = 2 To maxrow1
diff = sh1.Cells(row1, "C").Value - date0
If diff >= 0 Then
ThisWorkbook.Worksheets("管理表").Cells(3, 2 + diff).Value = ThisWorkbook.Worksheets("管理表").Cells(3, 2 + diff).Value + sh1.Cells(row1, "D").Value
End If
Next
Workbooks(book_name1).Close
Application.ScreenUpdating = True
MsgBox ("更新完了")
End Sub
tatsu99さん>
再度のマクロ作成、ありがとうございます。
家では試せませんので、明日試してみます。
いろいろお世話になりました!
No.8
- 回答日時:
こんばんは!
横からお邪魔します。
「集計表.xlsm」と「管理表.xlsm」は同じフォルダ内に保存されているという前提です。
VBAでもそのままワークシート関数が使えますので、SUMIF関数で対応してみました。
管理表Bookの標準モジュールにしてください。
Sub Sample1()
Dim j As Long, fN As String
Dim wB As Workbook, wS As Worksheet
fN = ThisWorkbook.Path & "\" & "集計表.xlsm"
Workbooks.Open fN
Set wB = ActiveWorkbook
Set wS = wB.Worksheets("集計表")
With ThisWorkbook.Worksheets("管理表")
For j = 2 To .Cells(2, Columns.Count).End(xlToLeft).Column
.Cells(3, j) = WorksheetFunction.SumIf(wS.Range("C:C"), .Cells(2, j), wS.Range("D:D"))
Next j
End With
'//開いたブック「集計表.xlsm」を保存せずに閉じる//
Application.DisplayAlerts = False
wB.Close
Application.DisplayAlerts = True
MsgBox "完了"
End Sub
こんなんではどうでしょうか?m(_ _)m
No.7
- 回答日時:
取り敢えず。
Sub try()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim r1 As Range, r2 As Range
Dim r As Range, cnt As Integer
Set ws1 = Workbooks("集計表.xlsm").Worksheets("集計表")
Set ws2 = ThisWorkbook.Worksheets("管理表")
With ws1
Set r1 = .Range("C2", .Cells(Rows.Count, 3).End(xlUp))
End With
With ws2
Set r2 = .Range("B2", .Cells(2, Columns.Count).End(xlToLeft))
For Each r In r2
cnt = WorksheetFunction.SumIf(ws1.Range(r1.Address(0, 1)), "=" & r.Value, ws1.Range(r1.Offset(, 1).Address(0, 1)))
r.Offset(1).Value = cnt
Next
End With
Set r1 = Nothing
Set r2 = Nothing
Set ws1 = Nothing
Set ws2 = Nothing
End Sub
出来上がっては見たものの(多分いけるかな?)、No.6の
>マクロ実行前は閉じている前提が希望です。
は完全に作り直しですので、検証の出来ない私は退散するしかないですね。
ググって見るとわかりますけど、ブックをとじた状態でデータを出すのがどれだけ大変なのか
色々見つかると思いますよ。
簡単に言えば『閉じている本の中身を読む』のと同じですからね。
ただ最近の物であれば上手くいけばブックに接続をし、データベースもどきでデータを抜き出せるかも
しれませんが、あいにく私にはそれば出来る環境ではないですし。
完成すると良いですね。

No.6
- 回答日時:
>説明不足でした。
集計表と管理表は別のエクセルになります。>この形でのマクロは可能でしょうか。。。?
以下の補足をお願いします。
1)集計表のあるブックのブック名(拡張子も含めて記述してください)
2)管理表のあるブックのブック名(拡張子も含めて記述してください)
3)マクロを集計表のあるブックに割り当てるのか、管理表のあるブックのブックに割り当てるかの指定
(マクロを割り当てられたブックの拡張子は.xlsmになります。他方は、xlsm又はxlsxになります)
4)マクロ実行時、両ブックは既に開かれている前提でマクロを実行しますがよろしいでしょうか。
tatsuさま
1 集計表.xlsm
2 管理表.xlsm
3 管理表側です。
4 集計表側は可能であれば、マクロ実行前は閉じている前提が希望です。
宜しくお願いします(_ _)
No.5
- 回答日時:
集計表の入荷日が月を跨ごうが年を跨ごうが、管理表の日付が何日から始まろうがそこは問題にはならないのですが、
なにぶんExcelが古い物でブック指定が違っているんですよね。
同一ブックであればまだ良かったのですが。。。

No.4
- 回答日時:
No1です。
以下のマクロを標準モジュールへ登録してください。
Option Explicit
Public Sub 総数更新()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim maxrow1 As Long
Dim maxcol2 As Long
Dim row1 As Long
Dim col2 As Long
Dim diff As Long
Dim date0 As Date
Set sh1 = Worksheets("集計表")
Set sh2 = Worksheets("管理表")
maxrow1 = sh1.Cells(Rows.Count, "C").End(xlUp).Row 'C列の最大行取得
maxcol2 = sh2.Cells(2, Columns.Count).End(xlToLeft).Column '2行目の最終列取得
date0 = sh2.Cells(2, "B").Value
If Day(date0) <> 1 Then
MsgBox ("B2の日付が1日でない")
Exit Sub
End If
'総数クリア
sh2.Range("B3:B" & maxcol2).Value = ""
For row1 = 2 To maxrow1
diff = sh1.Cells(row1, "C").Value - date0
If diff >= 0 Then
sh2.Cells(3, 2 + diff).Value = sh2.Cells(3, 2 + diff).Value + sh1.Cells(row1, "D").Value
End If
Next
MsgBox ("更新完了")
End Sub
tatsu99さん>
さっそくの回答ありがとうございます。
申し訳ありません。
説明不足でした。集計表と管理表は別のエクセルになります。
この形でのマクロは可能でしょうか。。。?
No.2
- 回答日時:
SUMIF関数
http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu …
でいけるんじゃないですか?
>日々入荷予定数が変わるので、日々管理表への総数変更(更新)をしたいため
なら、数式が手っ取り早いですよ。
管理表の日付が変更されたとしても、セルを参照するのですから数式を変える必要はないと思いますし。
まぁ、担当者が『間違えて数式消しちゃうから』と言うなら別ですけど。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- Excel(エクセル) Excelのマクロを教えていただけないでしょうか? 1 2023/07/06 19:56
- Visual Basic(VBA) Sheet1の出荷日と品名が並んだ表からSheet2の品名別出荷日別の個数一覧表を作っています。 オ 3 2022/12/01 23:54
- Excel(エクセル) 【Excel質問】別シートにある複数の同型の表から、同じ行項目にある数字を集計する 4 2023/02/16 00:14
- Excel(エクセル) Excel 在庫管理について 3 2023/02/09 10:00
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Excel(エクセル) EXCEL値貼り付け(ある条件のもと自動化) 5 2023/06/06 12:21
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
このQ&Aを見た人はこんなQ&Aも見ています
-
初めて見た映画を教えてください!
初めて見た映画を覚えていますか?
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
最強の防寒、あったか術を教えてください!
とっても寒がりなのですが、冬に皆さんがされている最強の防寒、あったか術が知りたいです!
-
洋服何着持ってますか?
洋服を減らそうと思っているのですが、何着くらいが相場なのかわかりません。
-
一番好きなみそ汁の具材は?
みんなで大好きなみそ汁の具材について語り合おうよっ!
-
VBAで重複する項目を1つにまとめて金額を合計したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 別ブックからコピペしたい...
-
エクセルVBAが途中で止まります
-
VBA シートをコピーする際に Co...
-
VBA コードを実行すると画面が...
-
【Excel VBA】書き込み先ブック...
-
[Excel]ADODBでNull変換されて...
-
別ブックをダイアログボックス...
-
VBAで別ブックのシートを指定し...
-
【ExcelVBA】zip圧縮されたCSV...
-
VBAで複数のブックを開かずに処...
-
ワイルドカード「*」を使うとう...
-
Excelブックがアクティブになっ...
-
2つ目のコンボボックスが動作...
-
VBS Bookを閉じるコード
-
VBAで別のブックにシートをコピ...
-
エクセルのマクロについて教え...
-
VBSでExcelのオープン確認
-
【マクロ】違うフォルダにある...
-
マクロを使って不特定のファイ...
-
Dir関数で複数ブックへ行いたい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別ブックをダイアログボックス...
-
VBA シートをコピーする際に Co...
-
VBA 別ブックからコピペしたい...
-
エクセルVBAが途中で止まります
-
VBAで別ブックのシートを指定し...
-
ワイルドカード「*」を使うとう...
-
Excelマクロ 該当する値の行番...
-
VBAで別のブックにシートをコピ...
-
【Excel VBA】書き込み先ブック...
-
[Excel]ADODBでNull変換されて...
-
【ExcelVBA】zip圧縮されたCSV...
-
VBA コードを実行すると画面が...
-
【ExcelVBA】インデックスが有...
-
VBS Bookを閉じるコード
-
ユーザーフォームの切り替えに...
-
vbaでvbaProjectのパスワード解...
-
【VBA】全シートの計算式を全て...
-
Excel にて、 リストボックスの...
-
フォルダ内の全てのファイルに...
-
【マクロ】違うフォルダにある...
おすすめ情報