Editado:

Editado:

Tenho algumas colunas, sendo importantes entre elas:Tarefas,Prioridade,Status.

Quero todas as linhas de registros onde oprioridadediz "Alto" para se atualizarem automaticamente e aparecerem no topo de outros registros.

Meu conhecimento de VB se limita a abrir o editor VB. Por favor ajude.

EDITAR

Aqui está uma captura de tela do que estou tentando fazer. Já defini alguma formatação condicional para destacar todas as linhas ondeprioridademostra comoalto. Agora preciso que todos esses registros (e os novos registros com prioridade "alta" sempre que adicionados) apareçam automaticamente no topo dos outros registros.

Captura de tela do Excel

Responder1

  1. Ative a filtragem automática de tabelas.

  2. Defina a formatação condicional para a coluna Status, marque os valores altos com uma cor de fundo agradável.

  3. Insira o código abaixo no módulo da planilha. Edite o número da coluna, o endereço da célula do cabeçalho e o valor da cor de fundo no código conforme necessário.

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 2 Then
        With AutoFilter.Sort
            .SortFields.Clear
            .SortFields.Add(Range("B1"), xlSortOnCellColor, xlAscending, , xlSortTextAsNumbers).SortOnValue.Color = RGB(242, 242, 242)
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End If
    End Sub
    

Agora, cada alteração na coluna B reordenará sua tabela de dados.

PS. A ordem final das linhas e a posse da linha alterada são imprevisíveis... Você pode refinar a ordem final definindo critérios de classificação mais detalhados.

PPS. Claro, você não pode usar formatação condicional e classificar diretamente pelo valor. Portanto, use esta postagem como um exemplo, não como uma solução.

Responder2

Eu gostaria de sugerir um conjunto de VBA (Macro), irá ajudá-lo a classificar as linhas que possuemAltoem ordem crescente e depois preencha com a cor de fundo.

Antes de classificar:

insira a descrição da imagem aqui


Depois de classificado:

insira a descrição da imagem aqui


  • PressioneAlt+F11ouClique com o botão direitooGuia Folhapara abrir o editor VB.
  • Copie e cole este código VBA como módulo padrão.

     Sub SortDataWithoutHeader()
    
    Range("Test12A.xlsm!Newdata1").Sort Key1:=Range("C2"), Order1:=xlAscending, Header:=xlYes
     Call Highlight
    
     End Sub
    

    Sub Highlight()

     Dim LastRow As Long, c As Range
     Dim MyRange As Range
LastRow = Cells(Cells.Rows.Count, "C").End(xlUp).Row
      Set MyRange = Range("C2:C" & LastRow)
      For Each c In MyRange
      If c.Value = "High" Then

       c.EntireRow.Interior.Color = vbGreen
       Else

       c.EntireRow.Interior.Color = xlNone
       End If

      Next

     End Sub

Observação

  • Nesta linha, Range("Test12A.xlsm!Newdata1"),Novos dados1é oIntervalo Nomeado, evitará a ediçãoIntervalo para classificartoda vez que uma nova linha for inserida.
  • Interior.Color = vbGreen,vbVerdeé editável.

Editado:

Este código classificará e organizará automaticamente o conjunto de dados em cada nova entrada e apenas as células destacadas terão textoAlto.

Private Sub Worksheet_Change(ByVal Target As Range)

On Error Resume Next
If Not Intersect(Target, Range("C:C")) Is Nothing Then
Range("C1").Sort Key1:=Range("C2"), _
Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom

Call Highlight

Application.EnableEvents = False

 End If
End Sub

Sub Highlight()
Dim cell As Range

For Each cell In Range("C:C")

If cell.Value = "High" Then
cell.Interior.Color = XlRgbColor.rgbLightGreen
Else
cell.Interior.Color = xlNone

End If
Next cell

End Sub

Ajuste as referências de células no código VBA conforme necessário.

Responder3

Tente usar a função Sortby(). Funcionou tão facilmente. O código VBA para alguém como eu (usuário novato do Excel) era muito assustador.

informação relacionada