Ir ao conteúdo

Excel VBA - como fazer uma condiçao com mais de um criterio "ou" - excel


Ir à solução Resolvido por Scofieldgyn,

Posts recomendados

Postado

@Scofieldgyn  precisava que fosse codigo mesmo, assim não funciona dentro da sub, tem que ser feita um a um (de preferência encontrasse qual coluna é pelo Find 

 

ex. Cells.Find(What:="Customer MPN (Manufacturers)", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
                                   :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
                                   False, SearchFormat:=False).Activate

Sub CopiaColaColunas()
    
    
    ActiveCell.FormulaR1C1 = _
        "=IF(OR(OR(RC[5]=""Qualified"",RC[5]=""Obsolete"",RC[5]=""LTB"")),""Active"",""Inactive"")"
    

end sub

 

  • Solução
Postado

@isabela queiroz Entendi, veja se te atende, talvez outros colegas tenha sugestões melhores que a minha. 

 

Sub Macro1()
'
Dim linha As Integer

linha = 3

Do While linha >= 3 And Cells(linha, 9) <> ""

If Cells(linha, 9) = "Qualified" Or Cells(linha, 9) = "Obsolete" Or Cells(linha, 9) = "LTB" Then
    Cells(linha, 4) = "Active"
    Else
    Cells(linha, 4) = "Inactive"
    

End If

linha = linha + 1


Loop

End Sub

 

  • Obrigado 1
Postado
Sub ActiveInactive()
 Dim col As Long, UL As Long
  col = Rows(2).Find("Customer MPN (Manufacturers)").Column
  UL = Cells(Rows.Count, col).End(3).Row
  With Cells(3, 4).Resize(UL - 2)
   .Formula = "=IF(OR(" & Cells(3, col).Address(0, 0) & "=""Qualified""," & Cells(3, col).Address(0, 0) & "=""Obsolete""," & Cells(3, col).Address(0, 0) & "=""LTB""),""Active"",""Inactive"")"
   .Value = .Value
  End With
End Sub

 

  • Obrigado 1
Postado

@Scofieldgyn Muito bom! funcionou perfeitamente, só precisava que em vez de localizar pela coluna ex."9" localizasse pelo nome ou pelo find por exemplo...

@OreiaG Seu codigo colocou "Inactive" em tudo, não sei porque..

 

Fiz assim, acho que ta dando certo, tem algo que pode dar algum erro futuro no codigo? 

 

Sub AjustColunC()
    
    Dim col     As Long
    Dim loc     As Long
    Dim linha   As Integer
    
    linha = 3 'mudar pra linha 2 quando tirar as anotações de cima
    col = Rows(2).Find("Customer MPN (Manufacturers)").Column
    loc = Rows(2).Find("Status (Manufacturers)").Column
      
    Do While linha >= 3 And Cells(linha, col) <> ""
        If Cells(linha, col) = "Qualified" Or Cells(linha, col) = "Obsolete" Or Cells(linha, col) = "LTB" Then
                Cells(linha, loc) = "Active"
            Else
                Cells(linha, loc) = "Inactive"
        End If
            linha = linha + 1
    Loop

End Sub

 

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...