Fórmula para copiar datos de una hoja a otra según el valor de una celda

En la hoja Pedidos tengo registrados todos los pedidos de los clientes. Cada Nº de pedido puede incluir hasta 4 productos diferentes. En otra hoja deseo tener la ficha de los clientes. Para ello mediante una lista (con validación de datos) selecciono el nombre del cliente en la celda B2 y se vuelca la información de ese cliente, en dicha hoja a partir de la fila 17. ¿Me podrías indicar una fórmula para ello?

1 respuesta

Respuesta
1

Por ejemplo, un cliente "A" realizó un pedido con 4 productos. Lo que quieres es, en la hoja "clientes", en la celda "B2" poner el cliente "A", y que una fórmula vaya a la hoja "pedidos" y que en la fila 17 te ponga el primer producto, en la fila 18 te ponga el segundo producto, ¿en la fila 19 te ponga el tercer producto y en la fila 20 te ponga el cuarto producto?

Si no es así, podrías poner 2 imágenes de lo que quieres, una imagen con la hoja "pedidos" y otra imagen con la hoja "clientes".

Por ejemplo, si en la hoja Fichas desde la celda B2 selecciono al cliente Bayer, se deberá mostrar en ésta hoja toda la información del cliente, (tomando las columnas que aparecen en el dibujo) a partir de la fila 17.

Gracias

El primer dibujo corresponde a la hoja Pedidos y la segunda a Fichas

Pero lo que pides no es posible hacerlo con una fórmula, tendría que hacerse con una macro.

Envíame tu archivo con datos de ejemplo para adaptar la macro.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario "Martin Delgado" y el título de esta pregunta.

Ya te he enviado el archivo

La siguiente macro va en los eventos de tu hoja "Fichas"

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Address(False, False) = "B2" Then
        If Target.Count > 1 Then Exit Sub
        Set h1 = Sheets("Pedidos")
        Set h2 = Sheets("Fichas")
        u1 = h1.Range("D" & Rows.Count).End(xlUp).Row
        u2 = h2.Range("C" & Rows.Count).End(xlUp).Row
        If u2 = 16 Then u2 = 17
        h2.Range("A17:H" & u2).ClearContents
        h1.[B2].AutoFilter
        h1.Range("B1:L" & u1).AutoFilter Field:=3, Criteria1:="=" & Target.Value
        u3 = h1.Range("C" & Rows.Count).End(xlUp).Row
        If u3 = 1 Then
            MsgBox "No existen pedidos con el nombre: " & Target.Value, vbExclamation, "BUSCAR PEDIDOS"
        Else
            h1.Range("B2:F" & u3 & ",H2:J" & u3).Copy h2.[A17]
        End If
        h1.[B2].AutoFilter
        h2.[B2].Select
    End If
End Sub

Saludos.Dante Amor

No olvides valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas