Страницы: 1
RSS
Выполнение только одного условия из нескольких (VBA)
 
Добрый день!
Есть несколько вариантов условий (в каждом варианте существует несколько аргументов), каждый последующий вариант условия дублирует предыдущий (убирается один из аргументов).
Как правильно записать код, что бы если для первого вариантов условий аргументов не достаточно выполнялось второе, если для второго не достаточно, выполнялось третье. Код ниже.
Заранее большое спасибо.

Код
If ДанныеМарка = ПланМарка And ДанныеТонн - Точность <= ПланТонн And ДанныеТонн + Точность >= ПланТонн And ДанныеВремяГода = ПланВремяГода And ДанныеВремя = ПланВремя Then
                    Worksheets("Временная таблица").Cells(k, 1) = Worksheets("Данные").Cells(i2, 3)
                    If Worksheets("Данные").Cells(i2, 3) > 5.6 Then
                        Сумма = Сумма + Worksheets("Данные").Cells(i2, 3)
                        Количество = Количество + 1
                    End If
                    k = k + 1
                End If


If ДанныеМарка = ПланМарка And ДанныеТонн - Точность <= ПланТонн And ДанныеТонн + Точность >= ПланТонн And ДанныеВремяГода = ПланВремяГода Then
                        Worksheets("Временная таблица").Cells(k, 1) = Worksheets("Данные").Cells(i2, 3)
                        If Worksheets("Данные").Cells(i2, 3) > 5.6 Then
                            Сумма = Сумма + Worksheets("Данные").Cells(i2, 3)
                            Количество = Количество + 1
                        End If
                        k = k + 1
                    End If


If ДанныеМарка = ПланМарка And ДанныеТонн - Точность <= ПланТонн And ДанныеТонн + Точность >= ПланТонн Then
                        Worksheets("Временная таблица").Cells(k, 1) = Worksheets("Данные").Cells(i2, 3)
                        If Worksheets("Данные").Cells(i2, 3) > 5.6 Then
                            Сумма = Сумма + Worksheets("Данные").Cells(i2, 3)
                            Количество = Количество + 1
                        End If
                        k = k + 1
                    End If


If ДанныеМарка = ПланМарка Then
                        Worksheets("Временная таблица").Cells(k, 1) = Worksheets("Данные").Cells(i2, 3)
                        If Worksheets("Данные").Cells(i2, 3) > 5.6 Then
                            Сумма = Сумма + Worksheets("Данные").Cells(i2, 3)
                            Количество = Количество + 1
                        End If
                        k = k + 1
                    End If
Изменено: yuppic - 17.06.2021 08:46:00
 
Вариант If...Then...Else

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
только немного не так
Код
If ДанныеМарка = ПланМарка Then
    If  ДанныеТонн - Точность <= ПланТонн And ДанныеТонн + Точность >= ПланТонн Then
         If  ДанныеВремяГода = ПланВремяГода Then
            If  ДанныеВремя = ПланВремя Then
            '  code 1
            end if
         '  code 2
         end if
     '  code 3
     end if
 '  code 4
 end if
По вопросам из тем форума, личку не читаю.
 
Возможно нужно пересмотреть весь алгоритм, но без примера это гадание на кофейной гуще.
Не понятно почему при выполнении разных условий выполняется одно и тоже действие:
Код
                    Worksheets("Временная таблица").Cells(k, 1) = Worksheets("Данные").Cells(i2, 3)
                    If Worksheets("Данные").Cells(i2, 3) > 5.6 Then
                        Сумма = Сумма + Worksheets("Данные").Cells(i2, 3)
                        Количество = Количество + 1
                    End If
                    k = k + 1

Попробуйте перед каждым End If (после k = k + 1) добавить Exit Sub или Exit For или Exit Do в зависимости от кода, тогда при выполнении условия будет осуществляться выход, либо из процедуры, либо из цикла, или начинайте проверку с меньшего условия к большему
Страницы: 1
Наверх