如果循环未显示范围内的值,则添加值

使用下面的代码,我循环了大约200个单元格的范围[Range(“R”&i)],以检查Temp_Sheet.Range(“B2”)值是否在范围内。 下面的代码很好用。

这里的问题是:如果循环完成,并没有find范围内的值,我需要B2值添加到下一个空白行。 我怎么去做这个? 先谢谢您的帮助。 如果没有find任何值,我可以在循环中添加将触发另一个子/函数的格式吗?

For i = 6 To ColarLastRow If ChangeSheet.Range("R" & i).Value = Temp_Sheet.Range("B2") Then ChangeSheet.Range("G" & i) = Sum_Range ChangeSheet.Range("G" & i).Interior.Color = RGB(0, 100, 0) Else: End If Next i 

看起来已经有一些很好的答案,但这是我想出来的….

  Dim ChangeSheet As Worksheet Dim Temp_Sheet As Worksheet Dim ValueFound As Boolean Set ChangeSheet = Sheets("ChangeSheet") Set Temp_Sheet = Sheets("Temp_Sheet") ColarLastRow = ChangeSheet.Cells(Rows.Count, 18).End(xlUp).Row ValueFound = False For i = 6 To ColarLastRow If ChangeSheet.Range("R" & i).Value = Temp_Sheet.Range("B2") Then ChangeSheet.Range("G" & i) = Sum_Range ChangeSheet.Range("G" & i).Interior.Color = RGB(0, 100, 0) ValueFound = True Else: End If Next i If ValueFound = False Then ChangeSheet.Range("R" & ColarLastRow + 1).Value = Temp_Sheet.Range("B2").Value End If 

你需要在循环中设置一些标志:

 Dim AddNew As Boolean AddNew = True For i = 6 To ColarLastRow If ChangeSheet.Range("R" & i).Value = Temp_Sheet.Range("B2") Then ChangeSheet.Range("G" & i) = Sum_Range ChangeSheet.Range("G" & i).Interior.Color = RGB(0, 100, 0) AddNew = False Else: End If Next i If AddNew Then 'place your code here End If 
 Dim counter as Integer counter = 0 For i = 6 To ColarLastRow If ChangeSheet.Range("R" & i).Value = Temp_Sheet.Range("B2") Then ChangeSheet.Range("G" & i) = Sum_Range ChangeSheet.Range("G" & i).Interior.Color = RGB(0, 100, 0) Counter = counter + 1 Else: End If Next i If counter = 0 then ChangeSheet.Range("R" & ChangeSheet.Range("R" & ChangeSheet.Rows.Count).End(xlUp).Offset(1,0) = Temp_Sheet.Range("B2") End If 
 dim Rng as Range Set rng = ChangeSheet.Range("R6:R" & ColarLastRow).Find _ (What:=Temp_Sheet.Range("B2"), LookIn:=xlValues) 'set LookIn:=xlValues, xlFormulas, as appropriate 'set MatchCase:=True or False, as appropriate If Rng is Nothing then ChangeSheet.Range("R" & ColarLastRow+1).Value = 'something 'set color here Else ChangeSheet.Range("G" & rng.row) = Sum_Range End if 

使用.Find将比循环更快。 如果你需要find多个事件,那么在Set Rng = add this之后:

 Set rng = ChangeSheet.Range("R6:R" & ColarLastRow).Find _ (What:=Temp_Sheet.Range("B2"), LookIn:=xlValues) While Not Rng is Nothing 'do your stuff here Set rng = ChangeSheet.Range("R" & Rng.Row & ":R" & ColarLastRow).Find _ (What:=Temp_Sheet.Range("B2"), LookIn:=xlValues) Wend