Logo Hardware.com.br
Keldor.Randor
Keldor.Rando... Zerinho Registrado
48 Mensagens 8 Curtidas

Excel: incluir um texto por formatação condicional é possível?

#1 Por Keldor.Rando... 19/02/2025 - 11:47
Pessoal, bom dia a todos.
Quero que o valor da célula "F" seja preenchido conforme o nome do fabricante na célula "B". Sempre que o fabricante for "Penalty", quero que apareça em "F" a palavra "ENVIO". Sei que por fórmula é possível, mas via formatação condicional, dá pra fazer?

Anexos

Office: Ryzen 7 5800X | Gigabyte Aorus B450M | 32GB (4 x 8GB) 3.0GHz | RTX 3090 | M2 Kingston 500GB | Corsair TX750W | H/X-300 Glass
Home: Ryzen 7 3700X | Gigabyte Aorus B450M | 32GB (2 x 16GB) 3.2GHz | RTX 2060 | M2 Kingston 480GB | SF Leadex 1000W | Carbide275R
Keldor.Randor
Keldor.Rando... Zerinho Registrado
48 Mensagens 8 Curtidas
#3 Por Keldor.Rando...
19/02/2025 - 16:32
Boa tarde, Patropi. Estava tentando fazer por formatação condicional justamente para não ter fórmula naquelas células e poder escrever nelas quando não fosse "envio", mas acho que é mais fácil eu criar outra coluna apenas para isso. Pelo que vi, a formatação condicional não aceita fórmulas como "SE" ou "SES" com todas as variáveis. Obrigado mesmo assim!
Office: Ryzen 7 5800X | Gigabyte Aorus B450M | 32GB (4 x 8GB) 3.0GHz | RTX 3090 | M2 Kingston 500GB | Corsair TX750W | H/X-300 Glass
Home: Ryzen 7 3700X | Gigabyte Aorus B450M | 32GB (2 x 16GB) 3.2GHz | RTX 2060 | M2 Kingston 480GB | SF Leadex 1000W | Carbide275R
gabo-lacerda
gabo-lacerda Zerinho Registrado
1 Mensagem 1 Curtida
#4 Por gabo-lacerda
22/02/2025 - 09:25
Keldor.Rando... disse:

‎Você pode criar essa automação no VBA utilizando um evento Worksheet_Change. Sempre que o valor na célula da coluna B for alterado para "Penalty", o código preencherá a coluna F com "ENVIO".

Aqui está como você pode fazer isso:
  1. Abra o Excel e pressione Alt + F11 para abrir o editor do VBA.

  2. No editor do VBA, clique duas vezes no nome da planilha onde deseja que a automação funcione (por exemplo, Plan1).

  3. Cole o seguinte código no editor:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim celula As Range

    ' Verifica se a alteração está na coluna B
    If Not Intersect(Target, Me.Columns("B")) Is Nothing Then
        Application.EnableEvents = False ' Evita loops infinitos
        For Each celula In Intersect(Target, Me.Columns("B"))
            If celula.Value = "Penalty" Then
                celula.Offset(0, 4).Value = "ENVIO" ' Coluna F fica 4 colunas à frente da coluna B
            Else
                celula.Offset(0, 4).Value = "" ' Limpa o valor se não for Penalty
            End If
        Next celula
        Application.EnableEvents = True ' Reativa os eventos
    End If
End Sub



  4. Feche o editor do VBA e volte para o Excel.

  5. Salve o arquivo como Pasta de Trabalho Habilitada para Macro (*.xlsm).



Como funciona o código:
  • Intersect(Target, Me.Columns("B")): Verifica se a célula alterada está na coluna B.
  • celula.Offset(0, 4): Refere-se à célula na mesma linha, mas 4 colunas à frente (ou seja, coluna F).
  • Se o valor da célula na coluna B for "Penalty", ele preenche a coluna F com "ENVIO". Caso contrário, limpa o valor da célula na coluna F.


Agora, sempre que você alterar uma célula na coluna B para "Penalty", a coluna F será preenchida automaticamente com "ENVIO".

@EDIT: Ja anexei um arquivo com a automação pronta.

Anexos

© 1999-2025 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal