在条件的第一个实例之后执行For循环



我有5列数据从第10行开始:

C: 物料
D:全部成本
E:保存
F:发票成本
G:期间
H:未保存的原因

如果没有提供节约(即全额成本=发票成本(,并且该材料已经在同一期间输入,我想突出显示H列中的单元格,以显示必须提供的原因。

我知道如何在for循环中使用一个简单的countif来实现这一点
突出显示单元格,但不排除期间中物料的第一个实例的代码:

For A = 10 To PD.Range("C" & Rows.Count).End(xlUp).Row
If PD.Range("H" & A).Value = "" And PD.Range("D" & A).Value = PD.Range("F" & A).Value And _
WorksheetFunction.CountIfs(PD.Range("C10:C5500"), PD.Range("C" & A).Value, PD.Range("G10:G5500"), PD.Range("G" & A).Value) > 1 Then

PD.Range("H" & A).Interior.Color = RGB(253, 211, 211)

End If
Next A

我只希望在给定周期编号中输入材料的第一个实例之后突出显示H列。即,第一次在期间中输入材料时,无需在同一期间之后的任何时间突出显示H列中的单元格,应突出显示该单元格。

我想我需要在周期号旁边添加一些材料变量计数器来跟踪这一点。

您可以在向下移动时调整Countifs((范围:

For A = 10 To pd.Range("C" & Rows.Count).End(xlUp).Row
With pd.Rows(A)
If .Columns("H").Value = "" And _
.Columns("D").Value = .Columns("F").Value And _
Application.CountIfs(pd.Range("C10:C" & A), .Columns("C").Value, _
pd.Range("G10:G" & A), .Columns("G").Value) > 1 Then
.Columns("H").Interior.Color = RGB(253, 211, 211)
End If
End With
Next A
Dim FirstSkipped as Boolean
FirstSkipped = False
For A = 10 To PD.Range("C" & Rows.Count).End(xlUp).Row
If FirstSkipped Then
If PD.Range("H" & A).Value = "" And PD.Range("D" & A).Value = PD.Range("F" & A).Value And _
WorksheetFunction.CountIfs(PD.Range("C10:C5500"), PD.Range("C" & A).Value, PD.Range("G10:G5500"), PD.Range("G" & A).Value) > 1 Then

PD.Range("H" & A).Interior.Color = RGB(253, 211, 211)

End If
End if
FirstSkipped = True
Next A

最新更新