Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Ordenar datos con macros - VBA EXCEL

| 13 comentarios

Excel VBA para filtrar y ordenar datos

Desactivación de filtros

 Cuando se trabaja en una base de datos Excel es posible que desee asegurarse de que todos los filtros  estén desactivados. Para ello se iniciará el proceso con dos "if". Por ejemplo, con una base de datos a partir de la celda A1  ejecutaremos 2 sentencias:

Range("A1" ).Select         

          If ActiveSheet.AutoFilterMode = True Then Selection.AutoFilter

           If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData

Ordenar los datos

Ejemplos:

- La siguiente macro de Excel funciona con cualquier tamaño de base de datos  a partir de la celda A1 y funcionará en cualquier versión de       Excel (1997 a 2010).

Sub proFilter()

Range("A1").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes

End Sub

- Ordenar  datos, considerando  tres campos diferentes.

Sub proFilter()

Range("A1").Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range( _         "B2"), Order2:=xlAscending, Key3:=Range("C2"), Order3:=xlAscending, _         Header:=xlYes

End Sub

Ejercicio.

- Aplicaremos el ordenamiento de datos por familias y sub-familias.

MACRO ORDENAR

(Para mayor visualización de la imagen, hacer click en la misma)

ORDENAR DATOS

Por: MARIA ANTONIETA VALENZA COLLADO

13 comentarios

  1. Hola desde ya muchas gracias, logre ordenar mis datos con este método en la hoja1, en la hoja2 tengo los mismos datos convinados a la h1 pero con otros tipos de datos asociados, hay alguna manera de que al cambiar los datos en la h1, en la hoja2 tambien se ordenen con su rango de celdas asociadas. O sea, detectar el cambio en la hoja2 y ordenar todo el rango ese. Desde ya muchas gracias

  2. Exelente!! Muchas gracias, es un codigo util, simple y efectivo.

  3. Perfecto!!! muchas gracias.

  4. gracias.........

  5. excelente. Gracias por aportar tus conocimientos, que a tantos nos ayudan.

  6. Gracias por el ejemplo !!, frente a eso me sale una duda, si quisieras que se ordenaran los datos, pero necesitas que un producto en especifico quede arriba o abajo como lo harías?. Pregunto esto porque en el trabajo que estoy realizando el rango de datos que hay para ordenar puede variar y necesito que si se ingresa un producto en especifico este quede en el tope del rango.

    Esperando una pronta respuesta

    De antemano gracias !!

  7. Que lineas de codigo mas simple.. excelente funcionamiento, me ahorro muchas lineas innecesarias.

  8. buena noche segui sus consejos los cuales agradesco y logre que se ordenaran los datos en forma ascendente correctamente, pero al hacerlo en forma descendente la macro toma los renglones en blanco y coloca los datos al final de la lista.

    dejo las instrucciones por si me hacen el favor de ayudarme.

    Sub ordenar()
    Dim rangoDatos As Range
    Dim campoOrden As Range
    Dim ultimaFila As Long
    ActiveSheet.Unprotect Password:="xxx"

    ultimaFila = Sheets("SVP").Range("C" & Rows.Count).End(xlUp).Row
    Set rangoDatos = Range("C3:BK" & ultimaFila)
    Set campoOrden = Range("bk3")

    rangoDatos.Sort key1:=campoOrden, order1:=xlAscending, Header:=xlnot
    ActiveSheet.Protect ("xxx")
    End Sub

    si me dan la solución al correo estare agradecido
    por su atención gracias

  9. El tema es el siguiente.
    Tengo 50 trabajadores y tengo que averiguar la preferencia para poder irse de vacaciones en una época, dividido en tres turnos. Y mi norma es que:
    Tienen preferencia los que no hayan disfrutado el turno en el último año, en igual de condiciones se mira el año anterior, en ingual de condiciones el anterior y así sucesivamente hasta cinco años antes.
    Cada trabajador puede solicitar sus preferencias de disfrute por orden en el que desearía disfrutar esas vacaciones.
    Me sería mucho más fácil si pudiera ponerte un ejemplo con una hoja. Como podría hacértela llegar?

  10. Muchas gracias!

  11. Buenos dias a ver si alguien me puede ayudar, se que lo que voy a pedir lo hacen los filtros de las tablas, pero me gustaria poder crear un boton supongamos que en la cel F8 y en la celda F9 escriba la palabra que quiero buscar, la idea es que al escribir la palabra me ordene el listado en funcion a la palabra que escriba en la celda F9... he estado buscando ejemplos de macros y no he obtenido resultado. La cuestion es en la lista dordenada por ejemplo me pongan monagas todas juntas.

  12. Muchas gracias!!!

  13. Este algoritmo de ordenamiento es Super bueno:

    Range("A1").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes

    Pero como puedo hacer si de cabecera tengo 02 filas de títulos; en lugar de 01. Ya que lo pruebo con una sola fila como titulo y perfecto; pero con 02 filas no funciona, ya que la 2º fila la toma como dato y la ordena. Muchas gracias por la respuesta, y felicitaciones por brillantes iniciativas.

Deja una respuesta

Los campos requeridos estan marcados con *.