H o l a:
Para ordenar los datos de esa forma hay que hacerlo con una macro.
Pon la siguiente macro en un botón para ordenar los datos por nombre:
Sub OrdenarPorNombre()
'Por.Dante Amor
OrdenarDatos 1
End Sub
En otro botón pon la siguiente macro:
Sub OrdenarPorDireccion()
'Por.Dante Amor
OrdenarDatos 2
End Sub
Sigue las Instrucciones para un botón y ejecutar la macro
- Abre tu libro de Excel
- Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
- En el menú elige Insertar / Módulo
- En el panel del lado derecho copia la macro
- Ahora para crear un botón, puedes hacer lo siguiente:
- Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
- Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
- Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
- Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: OrdenarPorNombre
- Aceptar.
- Para ejecutarla dale click a la imagen.
Sigue las instrucciones paracrear otro botón para la macro OrdenarPorDireccion
En otro módulo puedes poner esta macro:
Sub OrdenarDatos(n)
'Por.Dante Amor
Set h1 = Sheets("Hoja1")
Set h2 = Sheets("Hoja2")
h2.Cells.Clear
j = 1
'
For i = 1 To h1.Range("A" & Rows.Count).End(xlUp).Row Step 2
h2.Cells(j, "A") = h1.Cells(i, "A")
h2.Cells(j, "B") = h1.Cells(i + 1, "A")
j = j + 1
Next
'
If n = 1 Then
With h2.Sort
.SortFields.Clear: .SortFields.Add Key:=h2.Range("A1:A" & j)
.SetRange h2.Range("A1:B" & j): .Header = xlGuess: .Apply
End With
Else
With h2.Sort
.SortFields.Clear: .SortFields.Add Key:=h2.Range("B1:B" & j)
.SetRange h2.Range("A1:B" & j): .Header = xlGuess: .Apply
End With
End If
'
i = 1
For j = 1 To h2.Range("A" & Rows.Count).End(xlUp).Row
h1.Cells(i, "A") = h2.Cells(j, "A")
h1.Cells(i + 1, "A") = h2.Cells(j, "B")
i = i + 2
Next
'
MsgBox "Se ordenaron los datos"
End SubEsta última macro no la asignes a un botón, solamente pon la macro en un módulo:
Sigue las Instrucciones para poner la macro en un módulo.
- Abre tu archivo de excel
- Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
- En el menú elige Insertar / Módulo
- En el panel del lado derecho copia la macro
Antes de ejecutar la macro, tus datos a ordenar deberán estar en la "Hoja1", crea una hoja llamada "Hoja2", esa hoja es necesaria para realizar los ordenamientos.
Si quieres que las hojas tengan otro nombre, entonces cambia en la macro los nombres que quieras en estas líneas de la macro:
Set h1 = Sheets("Hoja1")
Set h2 = Sheets("Hoja2")
Avísame cualquier duda que tengas.