|
▼白 さん:
>思った以上に条件に一致するデータ多くて困っています
>もう一つ機能を追加したいのですがよろしいでしょうか。
>
>【追加】[Mx]セルの日付が3ヶ月以上前だったら処理をスキップ
以下でどうですか?
Sub Try2()
Dim valA As Variant
Dim valM As Variant
Dim rngU As Range
Dim rngB As Range
Dim rngAK As Range
Dim i As Long
Dim m
Dim Mday As Date
Mday = DateAdd("m", -3, Date) '本日より3か月前
With Sheets("B")
Set rngB = .Range("B3", .Cells(.Rows.Count, 2).End(xlUp))
Set rngAK = .Range("AK3", .Cells(.Rows.Count, "AK").End(xlUp))
End With
With Sheets("A").Range("A6", Cells(Rows.Count, 1).End(xlUp))
valA = .Value2 'A列の値
valM = .Offset(, 12).Value
Set rngU = .Offset(, 20) 'U列
End With
rngU.Interior.ColorIndex = xlNone '始めにU列塗りつぶしなし
For i = 1 To UBound(valA)
' 【追加】[Mx]セルの日付が3ヶ月以上前だったら処理をスキップ
If IsDate(valM(i, 1)) Then
If valM(i, 1) > Mday Then
With rngU.Item(i)
If Not IsEmpty(.Value) Then
m = Application.Match(.Cells, rngB, 0)
If IsError(m) Then 'B列に検索値がなかったとき
m = Application.Match(valA(i, 1), rngAK, 0)
If IsNumeric(m) Then
.Interior.Color = vbBlue
Else
.Interior.Color = vbRed
End If
End If
Else '[U6空白(値が無い)の場合]
m = Application.Match(valA(i, 1), rngAK, 0)
If IsNumeric(m) Then
.Interior.Color = vbBlue
End If
End If
End With
End If
End If
Next
MsgBox "処理が終わりました"
End Sub
|
|