日付と入荷予定数が記載された一覧表の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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
【お題】 ・存在しそうで存在しないモノマネ芸人の名前を教えてください
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら「ろうそくの数はあなたが好きな人の数です」と言われ浮気者扱いされたことをいまだに根に持っています。
-
架空の映画のネタバレレビュー
映画のCMを見ていると、やたら感動している人が興奮で感想を話していますよね。 思わずストーリーが気になってしまう架空の感動レビューを教えて下さい!
-
VBA 得意先ごと且つ日付ごとに数値を集計したい
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
別ブックをダイアログボックス...
-
エクセルVBAが途中で止まります
-
VBA コードを実行すると画面が...
-
【ExcelVBA】インデックスが有...
-
ワイルドカード「*」を使うとう...
-
フォルダ内の全てのファイルに...
-
VBA 別ブックからコピペしたい...
-
[Excel]ADODBでNull変換されて...
-
【ExcelVBA】zip圧縮されたCSV...
-
VBで既存エクセルシートを新規...
-
Excelマクロ 該当する値の行番...
-
VBAで別ブックのシートを指定し...
-
VBAで別のブックにシートをコピ...
-
Access開いているブックのセル...
-
2つ目のコンボボックスが動作...
-
Excel2007VBAファイルの表示に...
-
VBAで複数のブックを開かずに処...
-
Excel にて、 リストボックスの...
-
【VBA】全シートの計算式を全て...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
別ブックをダイアログボックス...
-
エクセルVBAが途中で止まります
-
ワイルドカード「*」を使うとう...
-
VBA 別ブックからコピペしたい...
-
【ExcelVBA】インデックスが有...
-
VBA コードを実行すると画面が...
-
VBAで別ブックのシートを指定し...
-
【ExcelVBA】zip圧縮されたCSV...
-
VBAで別のブックにシートをコピ...
-
VBA 実行時エラー 2147024893
-
VBA シート名が一致した場合の...
-
ユーザーフォームの切り替えに...
-
【マクロ】違うフォルダにある...
-
【Excel VBA】書き込み先ブック...
-
VBS Bookを閉じるコード
-
Excelマクロ 該当する値の行番...
-
VBAで複数のブックを開かずに処...
-
VBA アプリケーション定義また...
-
Excel2007VBAファイルの表示に...
おすすめ情報