毎週私は新しいデータを取得し、別のシートから「n/a」列をフィルタリングし、残りの列を取得して同じブックの既存のシートに追加します明日の日付よりも小さい日付を持つ行を色付けする必要があります。新しいデータの範囲は毎週変わり、新しいデータを色付けしたいだけです。私は列Dを使用して日付をチェックしており、列Cに日付もあるので、それがタスクを複雑にするかどうかわかりません。vba - 日付に基づいて行全体を陰影付けする
これは条件付き書式設定を使用して実現できますが、プロセスを自動化するためにvbaコードを使用したいと考えています。
新しいデータがどこで始まるかを判断することができず、条件を満たす場合は行全体ではなく色の列Dだけが確定するため、コードが機能しません。私のコードと私の欲望の結果を見てください。
Sub paste_value()
Dim ws1, ws2 As Worksheet
Dim lr1, lr2 As Long
Dim rCell As Range
'filter
Set ws1 = Worksheets("All Renewals_V2")
Set ws2 = Worksheets("Renewal policies")
lr1 = ws1.Cells(Rows.Count, "B").End(xlUp).Row
lr2 = ws2.Cells(Rows.Count, "A").End(xlUp).Row
'copy range from column B to column R
With ws1.Range("B2", "R" & lr1)
.AutoFilter Field:=1, Criteria1:="#N/A"
'paste result from column A
.Copy Destination:=Cells(lr2, "A")
End With
For Each rCell In .Range("D5", .Cells(.Rows.Count, 4).End(xlUp)).Cells
If rCell.Value <= Date + 1 Then
rCell.Interior.color = vbYellow
End If
Next rCell
End Sub
あなたならば '条件付きFormatting'は、プロセスを自動化しますたとえば1000行の書式設定ルールを適用します。次に、各行が移入されると、フォーマットが適用されます。データがない場合、フォーマットは表示されません。私の経験則はExcelで行うことができますが、必要なときにのみVBAを使用することです。あなたが本当にVBAコードを望むなら、 'rCell.Interior'を' rCell.Offset(、 - 3).Resize(1,4).Interior'に変更してください。 –
こんにちは、新しい情報と私は同じコードが動作するかどうか疑問に思っていた。コードが新しいデータの最初の行を検出しないので、D5の値はどうですか?つまり、毎週手動で更新する必要がありますか?だから来週、D7に変更する必要があるのですか?私はそれを手動で行う必要はありませんので、それを回避する方法はありますか? – sc1324