MACRO PARA ORDENAR ALFABÉTICAMENTE

Uno de los detalles más importantes a la hora de presentar la información, es sin duda, la estética y la funcionalidad.
En ese sentido, cuando generamos un informe tenemos la tendencia a no reparar en la necesidad de que los datos que estamos mostrando aparezcan ordenados de alguna forma.

Os voy a presentar una macro que realiza esa misma función, ordena nuestros datos de forma alfabética.

Supongamos un rango de celdas de A1 a F1 (aquí estaría el cabecero de la columna). En la columna B1 supongamos también que hay nombres  y en el resto de columnas diferentes indicadores. Pues bien, esta macro va a ordenar siempre la columna B1 (obviamente se puede cambiar de columna según nuestras necesidades) alfabéticamente hasta un rango de 65.000 filas.

Siempre podréis, en caso de necesidad, modificar los parámetros del código según vuestras necesidades.

Private Sub Ordenar_alfabéticamente()

Range("A1:F1").Select
Selection.AutoFilter
Range("A1:F65000").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A1:F1").Select
Selection.AutoFilter
Range("A1").Select

End Sub

Descarga el archivo pulsando enORDENAR ALFABÉTICAMENTE

PD: Si deseáis realizar esta tarea en columnas independientes, os recomiendo visitar la siguiente entrada: Ordenar columnas de forma independiente

Anuncios

16 pensamientos en “MACRO PARA ORDENAR ALFABÉTICAMENTE

  1. Hola Caleb,

    Se puede hacer, pero supongo que te refieres a columnas. Para hacerlo, realmente lo que debes hacer es dar la instrucción de que te ordene cada columna en el orden que desees, modificando la macro quedaría así, en el ejemplo con la Macro de ordenar por ID.

    Sub Ordenar_alfabéticamente_id()

    Range(“A1:F1”).Select
    Selection.AutoFilter
    Range(“A1:A65000”).Sort Key1:=Range(“A1”), Order1:=xlAscending, Header:= _
    xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
    Range(“A1:F1”).Select
    Selection.AutoFilter
    Range(“A1”).Select

    Range(“A1:F1”).Select
    Selection.AutoFilter
    Range(“B1:B65000”).Sort Key1:=Range(“B1”), Order1:=xlAscending, Header:= _
    xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
    Range(“A1:F1”).Select
    Selection.AutoFilter
    Range(“A1”).Select

    Range(“A1:F1”).Select
    Selection.AutoFilter
    Range(“C1:C65000”).Sort Key1:=Range(“C1”), Order1:=xlAscending, Header:= _
    xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
    Range(“A1:F1”).Select
    Selection.AutoFilter
    Range(“A1”).Select

    Range(“A1:F1”).Select
    Selection.AutoFilter
    Range(“D1:D65000”).Sort Key1:=Range(“D1”), Order1:=xlAscending, Header:= _
    xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
    Range(“A1:F1”).Select
    Selection.AutoFilter
    Range(“A1”).Select

    Range(“A1:F1”).Select
    Selection.AutoFilter
    Range(“E1:E65000”).Sort Key1:=Range(“E1”), Order1:=xlAscending, Header:= _
    xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
    Range(“A1:F1”).Select
    Selection.AutoFilter
    Range(“A1”).Select

    Range(“A1:F1”).Select
    Selection.AutoFilter
    Range(“F1:F65000”).Sort Key1:=Range(“F1”), Order1:=xlAscending, Header:= _
    xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
    Range(“A1:F1”).Select
    Selection.AutoFilter
    Range(“A1”).Select

    End Sub

    Este ejemplo se puede usar si tienes pocas columnas, en caso de ser muchas y para no hacer un código lento y extenso, puedes visitar el siguiente enlace de microsoft donde existe una macro para realizar el proceso: https://support.microsoft.com/kb/247311/es?wa=wsignin1.0

    Saludos.

    Me gusta

  2. Segu, disculpa pero por ejemplo yo tengo una hoja que llega hasta la celda (“YU”) creo que copiar y pegar hasta llegar esta celda es una lata…

    No habrá una forma de poner el rango desde A hasta YU sin copiar y pegar toda la vida?

    Gracias.

    Me gusta

  3. Hola Palma,

    Cuando dices que tienes una hoja con datos hasta la columna YU y quieres seleccionar el rango desde A … sin copiar y pegar, exactamente a que te refieres, es decir, deseas ordenar las columnas hasta ese rango? en ese caso, puedes echar mano del apunte que anexé de microsoft:
    https://support.microsoft.com/en-us/kb/247311/es?wa=wsignin1.0

    En todo caso, puedes enviarme un ejemplo de los datos que necesitas ordenar y como quieres que te aparezcan ordenados e intento trasladarte el ejemplo práctico.

    Puedes probar también como en el ejemplo que pongo en el post donde sí se selecciona un rango.

    Estamos en contacto,

    Saludos,

    Me gusta

  4. Pingback: ORDENAR COLUMNAS DE FORMA INDEPENDIENTE | Excel Signum

  5. Hola tengo un archivo e intente ordenar con tu macro pero me da errores cambie las celdas de acuerdo a mi necesidad pero no logro que se ordene; me gustaría enviarte el archivo para que lo revisaras por favor y Gracias..

    Me gusta

  6. Buenos días,

    ¿Sabrías adaptar esta macro para ordenar solo las filas selecciónadas con el raton, y ordenar alfabeticamente la columna P en orden cresciente?

    Tengo que ordenar asi 4.000 filas, asi que si lo consigues y vives por Madrid te invito a una caña 🙂

    Saludos,
    Fran

    Me gusta

  7. Hola Fran:

    Podrías enviar al correo de la web un ejemplo simple en un archivo en una pestaña la info como la tienes y en otra como te gustaría que quedase. Con breve explicación? Así verificó la mejor forma de hacer el trabajo. Sería interesante saber si será una tarea periódica y con la misma estructura de datos. En cuanto lo vea y tenga un momento te lo envío. El correo es excelsignum@yahoo.es luego hablamos de las cañas 🙂

    Me gusta

  8. Amigo me gustaría saber la macro que ordene alfabéticamente desde la celda D15 pero que desbloquee algunas columnas y luego lo vuelva a cerrar mil gracias…

    Me gusta

    • Hola Wider,

      Suponiendo que la hoja es la 1 y que cuando te refieres a desbloquear es que tenías la página protegida esta sería la macro:

      Sub ORDENAR()
      Dim rRango As Range
      Dim cCell As Range
      'desprotegemos documentos, debes introducir la contraseña
      Sheets(1).Unprotect "CONTRASEÑA"
      Range("D15").Select
      'seleccionamos desde D15 tanto hacía la derecha como la abajo hasta que finalicen los datos
      Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
      Set rRango = Selection
      Set cCell = ActiveCell
      'ordenamos
      If cCell Empty Then
      rRango.Sort Key1:=cCell, Order1:=xlAscending, Header:=xlYes
      End If
      'volvemos a protgeger
      Sheets(1).Protect "CONTRASEÑA"
      End Sub

      Saludos

      Me gusta

  9. muy bueno el archivo y me sirve de mucho, pero solo tengo una duda, ya que quiero continuar con estas macros en este mismo archivo, pero agregandola a mas hojas, mi pregunta, ¿como le hago para insertar los botones “ORDENAR POR PRODUCTO” y “ORDENAR POR ID”, con el insertar boton (control de formulario), o con el boton “boton de comando (controles activex)?

    Me gusta

¿Te ha gustado?. Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s