首页 > 解决方案 > VBA如何根据条件跳过行并在满足特定数量的条件时停止

问题描述

我正在为有两种奖品的比赛运行数据文件。二等奖基于一等奖,但使用 VBA,我很难跳过行并在特定条件(计数)处停止。

输出看起来像这样 伊姆古尔

Prize2 只有 2 个可用,我希望 VBA 代码在第 2 个成功的 Prize2 时停止它

我查看了 Do Until Loops 和 For...Next 选项,但没有获得成功的代码来停止 Prize 2 列表而不填满整个列或出现错误

下面是我使用的代码来获取现在的表格。我之前有前两行的代码,但是如果植物没有一等奖,那么二等奖就不会显示。

'Portion using Prize 1 to determine Prize 2
Dim LastRowDest As Long
Sheets("ThisSheet").Select
LastRowDest = Range("B" & Rows.Count).End(xlUp).Row
Range("G2:G" & LastRowDest).FormulaR1C1 = "=IF(RC[-1]=""Prize1"",""Prize2"","" "")"

这就是有两个 Prize2 可用的输出的样子 伊姆古尔

标签: excelvbaloops

解决方案


这是最终工作的代码。希望我能正确地概括它

Dim P1Range As Range
Dim P1Cell As Range
Dim P2Range As Range
Dim Counter As Long
Set P1Range = Range("F7:F" & LastRowDest)
Set P2Range = Range("G7:G" & LastRowDest)
Counter = Application.WorksheetFunction.CountIf(P2Range, "Prize2")
    For Each P1Cell In P1Range
            If P1Cell Like "*Prize1*" Then
                Counter = Application.WorksheetFunction.CountIf(P2Range, "Prize2")
                 'MsgBox Counter
                If Counter < 2 Then
                P1Cell.Offset(0, 1).Formula = "Prize2"                
                End If                 
            End If        
        Next P1Cell

推荐阅读