Macro para al dar clic a boton acomodar determinados valores en un rango de celda especifico

Tengo una tabla con 4 columnas:

Corte, Estilo, Familia y Cantidad

En cada una van valores diferentes, lo que necesito es ordenarlos por el valor de la Familia, pero en otro rango de celda diferente especificado para ese tipo de familia. Ejemplo:

-Corte -                  -Estilo-                  -Familia-                    -Cantidad-

Caballero              Formal                  Pantalon                         152 

Caballero               Casual                 Pescador                        658 

Niño                       Formal                  Pantalon                         985 

Caballero              Casual                    Short                              475 

Niño                       Casual                    Short                              15 

Caballero              Formal                  Pantalon                         235 

Y quiero que quede asi: (en otro espacio especifico de la hoja y no precisamente en ese orden para abajo)

___________________________________________________________________

                                           -Pantalon-

*Corte*                               *Estilo*                                 *Cantidad*

Caballero                             Formal                                   152

Caballero                             Formal                                   235

Niño                                      Formal                                   985 

_____________________________________________________________________

                                           -Pescador-

*Corte*                               *Estilo*                                 *Cantidad*

Caballero                             Casual                                   658

_____________________________________________________________________

                                           -Shortr-

*Corte*                               *Estilo*                                 *Cantidad*

Caballero                             Casual                                   475

Niño                                      Casual                                    15

_____________________________________________________________________.

Al seleccionar toda la tabla y dar clic a un boton ordene todos los valores por familia.

1 respuesta

Respuesta
2

Te recomiendo realizar el proceso en dos hojas. En la "Hoja1" pon tus datos, el resultado quedará en la "Hoja2"

Si quieres otros nombres de hojas, cambia en la macro "Hoja1" y "Hoja2" por tus nombres de hojas.

Sub Acomodar()
'Por.Dante Amor
    '
    Application.ScreenUpdating = False
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    h2.Cells.Clear
    u1 = h1.Range("A" & Rows.Count).End(xlUp).Row
    If h1.AutoFilterMode Then h1.AutoFilterMode = False
    With h1.Sort
        .SortFields.Clear
        .SortFields.Add Key:=h1.Range("A2:A" & u1)
        .SetRange h1.Range("A1:D" & u1): .Header = xlYes: .MatchCase = False
        .Orientation = xlTopToBottom: .SortMethod = xlPinYin: .Apply
    End With
    '
    h1.Range("C1:C" & u1).Copy h2.Range("F1")
    h2.Range("F1:F" & h2.Range("F" & Rows.Count).End(xlUp).Row).RemoveDuplicates Columns:=1, Header:=xlYes
    For i = 2 To h2.Range("F" & Rows.Count).End(xlUp).Row
        familia = h2.Cells(i, "F")
        If h1.AutoFilterMode Then h1.AutoFilterMode = False
        h1.Range("A1:D" & u1).AutoFilter Field:=3, Criteria1:=familia
        j = h2.Range("A" & Rows.Count).End(xlUp).Row + 2
        h2.Cells(j, "A") = familia
        j = j + 1
        u3 = h1.Range("A" & Rows.Count).End(xlUp).Row
        h1.Range("A1:B" & u3 & ",D1:D" & u3).Copy h2.Cells(j, "A")
    Next
    h2.Columns("F").ClearContents
    If h1.AutoFilterMode Then h1.AutoFilterMode = False
    Application.ScreenUpdating = True
    h2.Select
    MsgBox "Fin"
End Sub

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. 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”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: Acomodar
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

.

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

.

Avísame cualquier duda

.

¡Muchas Gracias! deja lo hago.

Dante, la macro hace lo que requiero, muchas gracias, solo una cosa, quiero acomodar los datos en la hoja 2, pero esta trae un diseño en especifico, entonces al darle al botón se me borra el formato y la acomoda como si fuera una hoja en limpio, también quiero que la familia se acomode en un rango distinto, un ejemplo. Que salga del B3 al B16, y otro la otra familia en el F3 al F16 y otra familia en el J3 al J16, espero y me pueda explicar. Saludos

Con todo gusto te ayudo con todas tus peticiones.

Cambiar la valoración de esta respuesta.

Crea una nueva pregunta y el desarrollo escribe "Para Dante Amor". Ahí describes con detalle y con ejemplos reales cómo quieres el resultado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas