|    | 
     ▼けい さん: 
>ある一覧表があり、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 
 | 
     
    
   |