Editado:

Editado:

Tengo algunas columnas, entre las que destacan:Tareas,Prioridad,Estado.

Quiero todas las filas de registros dondeprioridaddice "Alto" para actualizarse automáticamente y aparecer en la parte superior de otros registros.

Mi conocimiento de VB se limita a abrir el editor de VB. Por favor ayuda.

EDITAR

Aquí hay una captura de pantalla de lo que estoy tratando de hacer. Ya configuré algún formato condicional para resaltar todas las filas dondeprioridadse muestra comoalto. Ahora necesito que todos esos registros (y los nuevos registros con prioridad "alta" cada vez que se agreguen) aparezcan automáticamente encima de otros registros.

captura de pantalla de excel

Respuesta1

  1. Habilite el filtrado automático de tablas.

  2. Establezca el formato condicional para la columna Estado, marque los valores Altos con un color de fondo agradable.

  3. Inserte el siguiente código en el módulo de la hoja de trabajo. Edite el número de columna, la dirección de la celda del encabezado y el valor del color de fondo en el código según sea necesario.

    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
    

Ahora cada cambio en la columna B reordenará su tabla de datos.

PD. El orden final de las filas y la posesión de la fila modificada son impredecibles... Puede refinar el orden final estableciendo criterios de clasificación más detallados.

PPP. Por supuesto, no puede utilizar formato condicional y ordenar por valor directamente. Utilice esta publicación como muestra, no como solución.

Respuesta2

Me gustaría sugerir un conjunto de VBA (Macro), que le ayudará a ordenar las filas.Altoen orden ascendente y luego rellénelo con el color de fondo.

Antes de ordenar:

ingrese la descripción de la imagen aquí


Después de haber sido ordenado:

ingrese la descripción de la imagen aquí


  • O presioneAlt+F11oBotón derecho del ratónelPestaña Hojapara abrir el editor VB.
  • Copie y pegue este código VBA como módulo estándar.

     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

NÓTESE BIEN

  • En esta línea, Range("Test12A.xlsm!Newdata1"),Nuevos datos1es elRango con nombre, evitará editarRango para ordenarcada vez que se ingresará una nueva fila.
  • Interior.Color = vbGreen,vbVerdees editable.

Editado:

Este código ordenará y organizará automáticamente el conjunto de datos en cada nueva entrada y solo las celdas resaltadas tienen 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 las referencias de celda en el código VBA según sea necesario.

Respuesta3

Intente utilizar la función Sortby(). Funcionó muy fácilmente. El código VBA para alguien como yo (usuario novato de Excel) fue muy desalentador.

información relacionada