色の知識で人生の可能性が広がる!みんなに役立つ色彩検定 >>

Sheet名「DAY」の日付と一致する列をSheet名「MONTH」で参照し、値を貼り付けたいのですがうまくいきません?
VBAでどのように記述をしたら良いか教えてください。
よろしくお願いします。

「VBAで日々データを月次データのシートへ」の質問画像
教えて!goo グレード

A 回答 (1件)

こんばんは


DAYシートC3の値とMONTHシート2行目の各値はシリアルですか?
それとも、VBAで入力した文字列? 各値が解らないと探すのに困るかな

参考コード
①全てシリアルで書式設定で表示している場合
参考コードは(見つからない場合エラーが返ります。エラー処理は考慮していません)

Worksheets("MONTH").Rows(2).Find(What:=Worksheets("DAY").Cells(3, 3).Text, LookIn:=xlValues).Offset(1).Resize(7, 1).Value _
= Worksheets("DAY").Cells(3, 3).Offset(1).Resize(7, 1).Value

②DAYシートC3の値がシリアル値、MONTHシート2行目は文字列の場合
(見つからない場合、処理されない)
Dim r As Range
Dim ky As String
ky = Format(Worksheets("DAY").Cells(3, 3), "d(aaa)")
Set r = Worksheets("MONTH").Rows(2).Find(What:=ky, LookIn:=xlValues)
If Not r Is Nothing Then r.Offset(1).Resize(7, 1).Value = Worksheets("DAY").Cells(3, 3).Offset(1).Resize(7, 1).Value

③全部文字列の場合、又は上記①②
上記 ky = 右から/までを切り出し変数に代入
(Findで良いが参考の為、別方法)
Dim c As Range
Dim ky As String
ky = Worksheets("DAY").Cells(3, 3).Text
ky = Right(ky, InStr(StrReverse(ky), "/") - 1)
With Worksheets("MONTH")
For Each c In .Range("B2", .Cells(2, Columns.Count).End(xlToLeft))
If c.Text <> "" And ky = c.Text Then
c.Offset(1).Resize(7, 1).Value = Worksheets("DAY").Cells(3, 3).Offset(1).Resize(7, 1).Value
Exit For
End If
Next
End With
    • good
    • 0
この回答へのお礼

とても丁寧に教えていただきありがとうございます。
②で作成させて戴きます、助かりました^_^

お礼日時:2021/09/27 11:52

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

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング