VBA, как пропустить строки на основе условия и остановить, когда определенное количество условий было выполнено - PullRequest
0 голосов
/ 10 апреля 2019

Я запускаю файл данных для конкурса, в котором есть два типа призов.Второй приз основан на первом, но при использовании VBA у меня возникают трудности с пропуском строк и остановкой при определенных условиях (количество).

Вывод выглядит следующим образом Imgur

Тамтолько 2 доступны для Prize2, и я хочу, чтобы код VBA остановил его на 2-м успешном Prize2

. Я смотрел опции «До циклов» и «Для ...», но не получил удачного кода.чтобы остановить список Призов 2, не заполняя весь столбец или не получив сообщение об ошибке

Ниже приведено то, что я использую в качестве кода, чтобы получить таблицу такой, какая она есть сейчас.Ранее у меня был код для первых двух строк, но если у завода нет Приза 1, то 2-й Приз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"","" "")"

Вот как должен выводиться выход с двумя доступными Призами2.смотреть Imgur

1 Ответ

0 голосов
/ 10 апреля 2019

Вот код, который закончил работать. Надеюсь, что я это правильно сделал

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...