vba se todos estes = valor então

1

Meu código agora se parece com isso

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

Eu gostaria de tornar a declaração If mais compacta fazendo algo como:

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

Mas isso não funciona.

Existe um formulário mais compacto para escrever esta declaração If ou estou preso à primeira versão?

    
por Saralyn 22.10.2015 / 05:21

1 resposta

1

Uma maneira de compactar a instrução If:

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

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

Next

Além disso, há um problema de desempenho com seu código: Rows.Count = 1 milhão + linhas

Você pode percorrer apenas as linhas usadas: ActiveSheet.UsedRange.Rows.Count

    
por 22.10.2015 / 12:09