Excel 2010 IF () declaração de assistência

0

Preciso de ajuda para converter isso em uma fórmula do Excel ou em um script VBA. Deixe-me saber se você tem perguntas. Ele precisa ser executado em cada linha, iniciando na linha 2 até a linha 30. Esse é um exemplo do que estaria na linha 2. Além disso, se qualquer caractere diferente de 1 ou 2 - incluir nada ou nulo - estiver em J2, então M2 precisa permanecer em branco também.

if (J2="1" || J2="2"){
    if (I2="*(AE)*"){
        M2="(AE)"
    }
    else{
        if(I2="*(OT)*"){
            M2="(OT)"
        }
        else{
            if(I2="*(OT SP)*" || I2="*(OTSP)*"){
                M2="(OT SP)"
            }
            else{
                M2="F"
            }
        }
    }
}
    
por HBF 18.05.2014 / 19:10

1 resposta

1

No VBA, o equivalente ao seu exemplo é:

If Range("J2").Value = "1" Or Range("J2").Value = "2" Then
    If Range("I2").Value Like "*(AE)*" Then
        Range("M2").Value = "(AE)"
    End If
ElseIf Range("I2").Value Like "*(OT)*" Then
    Range("M2").Value = "(OT)"
ElseIf Range("I2").Value Like "*(OT SP)*" Or Range("I2").Value Like "*(OTSP)*" Then
    Range("M2").Value = "(OT SP)"
Else
    Range("M2").Value = "F"
End If

Mas, para fazer esse loop das linhas 2 a 30, adicionaremos uma variável de linha e um loop simples:

theRow = 2

Do
    If Range("J" & theRow).Value = "1" Or Range("J" & theRow).Value = "2" Then
        If Range("I" & theRow).Value Like "*(AE)*" Then
            Range("M" & theRow).Value = "(AE)"
        ElseIf Range("I" & theRow).Value Like "*(OT)*" Then
            Range("M" & theRow).Value = "(OT)"
        ElseIf Range("I" & theRow).Value Like "*(OT SP)*" Or Range("I" & theRow).Value Like "*(OTSP)*" Then
            Range("M" & theRow).Value = "(OT SP)"
        Else
            Range("M" & theRow).Value = "F"
        End If
    End If

    theRow = theRow + 1

Loop Until theRow = 31
    
por 18.05.2014 / 19:41