Como distribuir en varias hojas con Macros

Necesito, mediante macros, copiar de una hoja Base a varias hojas del mismo libro según parámetro definido. De la hoja base consulto por concepto, en este caso el 1000, y llevo a la hoja frutas toda la lineas que cumplan con ese requisito (ordenadas en la hoja de destino según sean encontradas).

Debe llevar el concepto 2000 a la hoja Verduras y la 3000 a la hoja Frutas secas.

El concepto 5000 no se utiliza (pueden haber mas conceptos que no se requiera llevar a otra hoja.

Esta copia de la hoja base a las nuevas hojas debe hacerse mediante un botón. Debe borrar los antecedentes que existan solo en las hojas utilizadas y posteriormente llevar los antecedentes requeridos. También debe llevar el encabezado.

La salvedad es que los datos llevados a la hoja verduras no llevan la linea completa, no lleva el dato de la cantidad.

Se pide resolver con macros porque los registros a trabajar son mucho.

Hoja Base

Hoja Frutas

Hoja Frutas secas

Hoja Verduras

1 Respuesta

Respuesta
1

H o l a:

Puedes explicar con detalle esta parte:

"Debe borrar los antecedentes que existan solo en las hojas utilizadas y posteriormente llevar los antecedentes requeridos. También debe llevar el encabezado."

Se refiere a que tiro la consulta una vez y si tengo que tirarla otra vez, me borre los antecedentes consultados en la primera oportunidad y me deje sólo los últimos. Que lleve el encabezado es ídem.

H o l a:

Te anexo la macro

Sub Distribuir()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("Base")
    '
    conceptos = Array(1000, 2000, 3000)
    hojas = Array("Frutas", "Verduras", "Frutas secas")
    h1.[A1].AutoFilter
    u = h1.Range("B" & Rows.Count).End(xlUp).Row
    For i = LBound(conceptos) To UBound(conceptos)
        h1.Range("A1:G" & u).AutoFilter Field:=2, Criteria1:=conceptos(i)
        Sheets(hojas(i)).Cells.Clear
        h1.Range("A1:G" & u).Copy Sheets(hojas(i)).[A1]
    Next
    h1.[A1].AutoFilter
    Sheets("Verduras").Columns("F").Delete
    MsgBox "Terminada"
End Sub

‘_

Excelente maestro.

Hace lo que se pidió. Pero revisando la solución me doy cuenta que los conceptos pueden ser muchos y tendría que ponerlos todos en la macro. Se podría poner una hoja llamada variables e ir a buscar a esa hoja el destino de los conceptos (en que hoja quedará)

Ej Hoja variables

Emp Concepto Productos

10   1000  Frutas

10   2000  Verduras

10  3000  Frutos Secos

10  4000 Conceptos a incluir en futuras hojas

Valoro la respuesta y espero me puedas contestar esto.

La macro está preparada para algo así, en estas líneas:

    conceptos = Array(1000, 2000, 3000)
    hojas = Array("Frutas", "Verduras", "Frutas secas")

solamente tienes que agregar las nuevas hojas, por ejemplo:

    conceptos = Array(1000, 2000, 3000, 4000)
    hojas = Array("Frutas", "Verduras", "Frutas secas", "Futura hoja")

'

Si quieres que los conceptos y el nombre de la hoja se tome de una hoja llamada "Variables", crea una nueva pregunta para crear la macro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas