如果条件为 true,则过滤该值并将其放在旁边的"yes"否则"no"



你好,我在vba中非常新,因为我在这里遇到问题,如果条件正确,请在过滤后的单元格中放置"是">

但是,当我运行代码循环时,即使条件不正确

,也将"是的数据"放置
VBA
Sub check()
   Dim j As Long
   Dim dsheet As Worksheet
   Dim lastrow As Long
   Dim fr As Range
   Dim psheet As Worksheet
   Dim c As Range
  Set dsheet = Worksheets("Workings")
   Set psheet = Worksheets("sheet1")
   lastrow = dsheet.Cells(Rows.Count, 1).End(xlUp).row
   For j = 1 To lastrow
   psheet.Range("M2").Value = dsheet.Range("A2" & j)
    psheet.Range("N2").Value = dsheet.Range("B2" & j)
      psheet.Range("A1").AutoFilter Field:=1, Criteria1:=psheet.Range("M2")
psheet.Range("B1").AutoFilter Field:=2, Criteria1:=psheet.Range("N2")
  psheet.Range("A2:I" & psheet.Cells(Rows.Count, 1).End(xlUp).row).SpecialCells (xlCellTypeVisible)
 dsheet.Range("M2").Value = dsheet.Range("A" & j)
    dsheet.Range("N2").Value = dsheet.Range("B" & j)
dsheet.Range("A1").AutoFilter Field:=1, Criteria1:=dsheet.Range("M2")
dsheet.Range("B1").AutoFilter Field:=2, Criteria1:=dsheet.Range("N2")
 Set fr = psheet.Range("C2:C50").Find(what:="12345", MatchCase:=True)
 For Each c In dsheet.Range("E2:E2000" & Range("A" & Rows.Count).End(xlUp).row).SpecialCells(xlCellTypeVisible)
         If fr Is Nothing Then
      dsheet.Range("A2" & Range("A" & Rows.Count).End(xlUp).row).SpecialCells (xlCellTypeVisible)
        If c.Offset(, -1).Value = vbNullString Then Exit For
        c.Value = "NO"
       Else
     dsheet.Range("A2" & Range("A" Rows.Count).End(xlUp).row).SpecialCells   (xlCellTypeVisible)
        If c.Offset(, -1). Value =vbNullString Then Exit For
        c.Value = "Yes"
   End If
   Next c
Next j
dsheet. AutoFilterMode = False  
psheet. AutoFilterMode = False
   End Sub

所以,我希望该代码根据条件将"是"或"否"放置,如果有人在此问题中有人帮助我

,将会有很大的帮助

如果每个语句都需要结束。应该这样:另外,适当的缩进有助于使您的代码更可读。

   If fr Is Nothing Then
     dsheet.Range("A2" & Range("A" & Rows.Count).End(xlUp).row).SpecialCells (xlCellTypeVisible)
     If c.Offset(, -1).Value = vbNullString Then Exit For
     End If
     c.Value = "NO"
   Else 
     dsheet.Range("A2" & Range("A" Rows.Count).End(xlUp).row).SpecialCells   
     (xlCellTypeVisible)
        If c.Offset(, -1). Value =vbNullString Then Exit For
        End If
     c.Value = "Yes"
   End If

最新更新