プロが教える店舗&オフィスのセキュリティ対策術

Book1のセルへ別Book(Book2)からカウントした件数を貼り付けています。

現在の下記マクロの記述では月(8月)を指定しているため、
9月になると記述を(9月)に変更しなければなりません。
例えばBook1のSheet1セルO1に「9月」と入力してマクロを実行すると
9月のセルH5へ(Book2)からカウントした件数を張り付けることは
可能でしょうか?
・・・・・・・・・・・・・・・・・・・・・
Sub Book2から転記()
'「同一フォルダ内の別ブック」開く
Dim bookpath As String
bookpath = ThisWorkbook.Path & "\" & "Book2.xlsx"
Workbooks.Open bookpath
'「別ブック」を参照して条件一致の数を算出
With Workbooks("Book2.xlsx").Worksheets("Sheet1")
ThisWorkbook.Worksheets("Sheet1").Cells(5, "G") = WorksheetFunction.CountIf(.Range("E:E"), "新規2021.08")
End With
'「別ブック」を閉じる
Workbooks("Book2.xlsx").Close
End Sub

「Book1のセルへ別Book(Book2」の質問画像

質問者からの補足コメント

  • 説明不足で申し訳ございません。
    抽出条件も9月とした場合、"新規2021.08"から"新規2021.09"ヘ変更する記述は可能でしょうか?
    よろしくお願いします。

      補足日時:2022/02/17 13:11
  • ご指摘の通りQ1”9月”P1に"新規2021.09"をどのように記述するのかが勉強不足でわかりません。
    お手ほどきいただけませんでしょうか?
    よろしくお願いいたします。

      補足日時:2022/02/20 21:25
  • 理解不足ですいません。
    O1に"9月"と直接入力しP1に"新規2021.09"と直接入力した場合、実行されるコードの記述をご教授いただけませんでしょうか?
    お手数ですがよろしくお願いいたします。

    No.4の回答に寄せられた補足コメントです。 補足日時:2022/02/21 09:22

A 回答 (5件)

>O1に"9月"と直接入力しP1に"新規2021.09"と直接入力した場合、実行されるコードの記述をご教授いただけませんでしょうか?



以下のようにしてください。

Sub Book2から転記()
Dim rg As Range
Dim mm_str As String
Dim date_str As String
mm_str = ThisWorkbook.Worksheets("Sheet1").Range("O1").Value
date_str = ThisWorkbook.Worksheets("Sheet1").Range("P1").Value
Set rg = ThisWorkbook.Worksheets("Sheet1").Range("C4:N4").Find(what:=mm_str)
If rg Is Nothing Then
MsgBox ("該当月なし")
Exit Sub
End If
'「同一フォルダ内の別ブック」開く
Dim bookpath As String
bookpath = ThisWorkbook.path & "\" & "Book2.xlsx"
Workbooks.Open bookpath
'「別ブック」を参照して条件一致の数を算出
With Workbooks("Book2.xlsx").Worksheets("Sheet1")
rg.Offset(1).Value = WorksheetFunction.CountIf(.Range("E:E"), date_str)
End With
'「別ブック」を閉じる
Workbooks("Book2.xlsx").Close
End Sub
    • good
    • 0
この回答へのお礼

C4:N4を参照してoffset(1)これがイメージできませんでしたが、教えていただいたコードでなんとか理解できました。ありがとうございます。助かりました!

お礼日時:2022/02/21 10:58

>ご指摘の通りQ1”9月”P1に"新規2021.09"をどのように記述するのかが勉強不足でわかりません。



Q1でなくO1ですね。
O1に"9月"と直接入力し
P1に"新規2021.09"と直接入力すれば良いです。
この回答への補足あり
    • good
    • 0

>抽出条件も9月とした場合、"新規2021.08"から"新規2021.09"ヘ変更する記述は可能でしょうか?



更に1年が過ぎた場合、"新規2022.09"となるのでしょうか。
そうなると9月の情報だけでは、何年の9月1日にするのかがわからなくなります。

"新規2021.09"の文字をP1のセルに記述し、P1セルの内容で抽出するようにされてはいかがでしょうか。
    • good
    • 0

こんにちは



直接の回答ではありませんので、すみませんけれど・・

「月ごとに集計したい」ということがわかっているのなら、わざわざマクロで処理しなくても、関数で十分のように思えます。
そうすれば、いちいちマクロを実行する必要もなく、自動で計算されるようになります。

例えば、Book2の空きセル(あるいは別シート)に、ご提示のSUMIF関数の集計をあらかじめ12か月分設定しておきます。
ご提示のブックからは、その集計結果への単純参照を設定しておくだけで済みます。
「指定月よりも以降は表示したくない」というのであれば、IF関数を付け加えて表示するか否かを分岐すれば良いでしょう。
    • good
    • 1

>例えばBook1のSheet1セルO1に「9月」と入力してマクロを実行すると


9月のセルH5へ(Book2)からカウントした件数を張り付けることは
可能でしょうか?

9月になったとき、貼り付け先が変わるのは理解できますが、検索文字列
("新規2021.08")は、変わらなくて良いのでしょうか。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!