|
▼けい さん:
>ある一覧表があり、B列が●であるデータを対象とし、
>パターン1=S,T,Yに日付がある場合
>パターン2=S,T,Uに日付がある場合
>パターン3=S,Tに日付がある場合
>パターン1=S,T,W,Xに日付がある場合
一案ですが、AutoFilterを使ってはどうでしょう?
3行目が表の列見出し行で、正味データは 4行目からの表があるとします。
最初に、「B列が●で」 かつ 「S,T列が日付である」行を抽出します。
↑の条件で抽出された行に 「パターン3」を記入します。それ以外の
パターンも最低↑この条件を満たしていないといけないので、とりあえず
「3」を記入しておきます。この3列のフィルタはそのままで、
のこりのパターンについて Y列も日付であれば 1を、
U列も日付であれば、2を
というように、フィルタをかけて抽出された行にパターンを記入します。
(条件をみたすパターンが複数ある行は、最後の条件パターンが記入されます)
Sub Try_日付チェック()
Dim rr As Range
Dim r As Range
With Worksheets("★★★")
Set rr = .Range("Y3", .Cells(.Rows.Count, "B"). _
End(xlUp).Offset(, -1))
.AutoFilterMode = False
End With
Set r = Intersect(rr, rr.Offset(1)) 'フィルタ範囲から見出しを除外
r.Columns("AR").ClearContents
'B列が●である行
rr.AutoFilter 2, "●"
'S,T列が日付けである行
rr.AutoFilter 19, ">=40000"
rr.AutoFilter 20, ">=40000"
If r.Columns(1).SpecialCells(xlVisible).Count > 0 Then
r.Columns("AR").Value = 3 'ST列に日付
rr.AutoFilter 25, ">=40000" 'Y列
If r.Columns(1).SpecialCells(xlVisible).Count > 0 Then
r.Columns("AR").Value = 1 'STY列に日付
MsgBox "ok?"
End If
rr.AutoFilter 25
rr.AutoFilter 21, ">=40000" 'U列
If r.Columns(1).SpecialCells(xlVisible).Count > 0 Then
r.Columns("AR").Value = 2 'STU列に日付
MsgBox "ok?"
End If
rr.AutoFilter 21
rr.AutoFilter 23, ">=40000" 'W列
rr.AutoFilter 24, ">=40000" 'X列
If r.Columns(1).SpecialCells(xlVisible).Count > 0 Then
r.Columns("AR").Value = 4 'STWX列に日付
MsgBox "ok?"
End If
End If
rr.Worksheet.AutoFilterMode = False
End Sub
|
|