Para DAM, Macro que busque en varias hojas unos valores de rango de celdas, copie y pegue en una hoja consolidada

DAM, de antemano muchas gracias, en esta oportunidad necesito una macro por medio de un botón de formulario me busque en todas las hojas, excepto la que se llama "CONSOLIDADO" un valor de referencia, seleccione todos los datos adyacentes de la misma fila, los copie y luego ubique en la hoja "CONSOLIDADO", seleccione de la columna "A" la última celda libre y pegue el contenido copiado.

En el siguiente link puede encontrar un archivo llamado "inventario.xlsm", para entender mejor el contenido de la ayuda.

inventario.xlsm

Quedo pendiente si requieres más información.

Saludos.

1 Respuesta

Respuesta
1

¿Me puedes explicar para qué se ponen las referencias en la columna "N"?

En la hoja explicación tiene este número 200600019 y no lo encuentro en ninguna de las hojas, ¿qué pasó?

DAM, primero que todo muchas gracias por responder; en cuanto a la referencia que comentas se encuentra en la celda "A4" de la hoja "BEBIDAS" y corresponde a la Bebida de Té.

En cuando a la duda referente a la columna "N", es que en la columna "L" se encuentra el listado general de Referencias y en la columna "N" va únicamente el listado de referencias a buscar entre todas las hojas, que llegan allí desde el Listbox1 que se encuentra en el formulario.

Entonces en la columna "L", podrán estar 800 o 1000 referencias diferentes, pero en la columna "N" únicamente 40 o 50 a buscar dentro de todas las hojas.

Quedo atento por si requiere de otra aclaración.

Saludos.

Te anexo el código para buscar y copiar

Private Sub CommandButton1_Click()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("CONSOLIDADO")
    u = h1.Range("L" & Rows.Count).End(xlUp).Row
    If u = 1 Then u = 2
    h1.Range("A2:J" & u).ClearContents
    j = 2
    '
    For i = 2 To h1.Range("N" & Rows.Count).End(xlUp).Row
        For Each h In Sheets
            nom = h.Name
            Select Case h.Name
                Case "CONSOLIDADO", "Explicación", "RESULTADO ESPERADO"
                Case Else
                    Set r = h.Columns("A")
                    Set b = r.Find(h1.Cells(i, "N"), lookat:=xlWhole)
                    If Not b Is Nothing Then
                        ncell = b.Address
                        Do
                            h.Range("A" & b.Row & ":J" & b.Row).Copy
                            h1.Cells(j, "A").PasteSpecial xlPasteValues
                            j = j + 1
                            Set b = r.FindNext(b)
                        Loop While Not b Is Nothing And b.Address <> ncell
                    End If
            End Select
        Next
    Next
    Application.ScreenUpdating = True
    MsgBox "Búsqueda terminada", vbInformation
End Sub

El código revisa si hay más de una referencia en cada hoja, si encuentra más de una también la copia. si no lo necesitas avísame para hacer la corrección.

Saludos. Dante Amor

Si es lo que necesitas. No olvides valorar la respuesta.

DAM, muchas gracias, hasta ese punto funciona perfectamente, solo me quedan dos cosas que por favor solicito de tu colaboración al respecto de ésta ayuda.

1. No tengo ningún inconveniente en borrar los nombres de "Explicación" y "RESULTADO ESPERADO"; puesto que los coloqué como apoyo en la explicación, pero realmente no existen en el libro original.

2. Realmente no existe la posibilidad que en todo el libro exista una Referencia repetida, entonces si le solicitaría hacer la corrección.

Por todo lo demás está calificable con 500 puntos sobre 10.

Espero tu corrección para proceder a valorar y concluir la ayuda.

Saludos, 


                    

Si no existen referencias repetidas, entonces puedes utilizar la macro sin problemas.

Puedes quitar las hojas de tu archivo y la macro tampoco tendrá problemas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas