Ordenar alfabéticamente de manera automática

Necesito realizar una macro que de manera automática (sin apretar botones) vaya ordenando alfabéticamente los nombres que voy ingresando en dos columnas, siempre a partir de la fila 2. Por ejemplo:

En toda la columna P, a partir de P2, voy ingresando nombres y apellidos, como ser "Jorge Gómez", o "Esteban Pérez", etc... Entonces, a medida que voy ingresando los nombres, que se vayan auto-ordenando alfabéticamente.

Por otra parte, realizar lo mismo, pero en la columna Q, a partir de Q2; dado que en Q tengo otra lista con otros nombres diferentes.

1 respuesta

Respuesta
2

H o l a: Pon la siguiente macro en los eventos de tu hoja

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Row = 1 Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Columns("P:Q")) Is Nothing Then
        u = Cells(Rows.Count, Target.Column).End(xlUp).Row
        With ActiveSheet.Sort
            .SortFields.Clear
            .SortFields.Add Key:=Range(Cells(2, Target.Column), Cells(u, Target.Column)), _
                SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            .SetRange Range(Cells(2, Target.Column), Cells(u, Target.Column))
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End If
End Sub

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. En el panel del lado derecho copia la macro
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Estimado Dante Amor,

Puse la macro pero no hace absolutamente nada. Para probar, en P2 escribí "Mariano", luego en P3 escribí "Aarón". Esperaba que automáticamente, luego de escribir "Aarón" y dar Enter, lo ordenara alfabéticamente, de modo que "Aarón" quedase en P2 y "Mariano" en P3... pero no hace nada.

¿Me estará faltando algo?

¿Pusiste la macro según las instrucciones?

¿Tu archivo lo abriste con las macros habilitadas?

Si Dante, hice todo... 

Dante,

Acabo de probar nuevamente... Hace lo solicitado, pero a partir de la fila 3... Debería hacerlo a partir de la 2. Cabe aclarar que solicito a partir de la fila 2, porque en la fila 1 tengo puesto el título de la columna

Te anexo la macro actualizada

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Row = 1 Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Columns("P:Q")) Is Nothing Then
        u = Cells(Rows.Count, Target.Column).End(xlUp).Row
        With ActiveSheet.Sort
            .SortFields.Clear
            .SortFields.Add Key:=Range(Cells(2, Target.Column), Cells(u, Target.Column)), _
                SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            .SetRange Range(Cells(1, Target.Column), Cells(u, Target.Column))
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End If
End Sub

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas