1

Мой код сейчас выглядит так

For i = 1 To Rows.Count
    If (Cells(i, 24) = "Y" And Cells(i, 25) = "Y" And Cells(i, 40) = "Y") Then
            sum = sum + 1
    End If
End If
Next

Я хотел бы сделать выражение If более компактным, выполнив что-то вроде:

For i = 1 To Rows.Count
    If (Cells(i, 24) And Cells(i, 25) And Cells(i, 40)) = "Y") Then
            sum = sum + 1
    End If
End If
Next

Но это не работает.

Есть ли более компактная форма для написания этого оператора If, или я застрял с первой версией?

1 ответ1

1

Один из способов сжать оператор If:

For i = 1 To ActiveSheet.UsedRange.Rows.Count

    Sum = Sum + Abs(Cells(i, 24) & Cells(i, 25) & Cells(i, 40) = "YYY")

Next

Кроме того, существует проблема с производительностью вашего кода: Rows.Count = 1 миллион + строк

Вы можете проходить только через Используемые строки: ActiveSheet.UsedRange.Rows.Count

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .