Listar celdas relacionadas a un valor especifico?

Soy nuevo y veo que puedo obtener ayuda ya que no soy muy versado en el mundo de excel.

Actualmente tengo una hoja de calculo que me sirve como un sistema de facturación basico que va asi:

En la Hoja 1 "VENTAS" tengo las celdas... (entre otras como fecha, cantidad, etc)

#FACTURA      CODIGO     PRODUCTO      PRECIO

      001                204                  X                     X

En la Hoja 2 "FACTURACION" puedo obtener los productos y el precio con solo ingresar el numero de factura...

#FACTURA      CODIGO     PRODUCTO      PRECIO

      001                204                  X                     X

El problema esta en que una factura puede tener más de un codigo (Puede haber 12 codigos más) y necesito obtener esos codigos del listado de ventas solo con relacionar el # de factura, es decir, en este listado de ventas puede eventualmente haber 2 productos para la misma factura, por ej:

#120 PRODUCTO X

#121 PRODUCTO Y

#121 PRODUCTO Z

#122 PRODUCTO Y

#123 PRODUCTO Z

Actualmente tengo la siguiente formula en el campo "CODIGO" de la hoja "FACTURACION"

=SI.ERROR(BUSCARV($J$17; VENTAS; 2; 0);"")

La celda J17 contiene el numero de factura, es decir la formula busca el # de factura y me devuelve el primer codigo relacionado, pero en el siguiente campo requiero que me ingrese automaticamente el segundo codigo relacionado y si hay más pues agregarlos a las 12 filas subsiguientes que como dije son los campos para los productos que se van a facturar.

Quizás la mejor opción sea utilizar una base de datos pero la verdad no tengo la menor idea de como hacerlo, por ahora me siento cómodo con excel.

1 respuesta

Respuesta
1

Puedo prepararte una macro, pero necesito saber exactamente cómo están tus hojas.

Puedes poner 2 imágenes, una imagen con los datos de tu hoja "VENTAS" y otra imagen de tu hoja "FACTURACION". Procura que en ambas imágenes se vean las filas y las columnas de excel.


Para añadir una imagen:

¿Cómo se hace para subir fotos?

Dante muchas gracias por tu respuesta, espero que sean claras las fotos.

Pon la siguiente macro en los eventos de la hoja "Facturacion"

Private Sub Worksheet_Change(ByVal Target As Range)
'Por Dante Amor
    'Llenar la hoja de facturación
    '
    Set h1 = Sheets("FACTURACION")
    Set h2 = Sheets("VENTAS")
    '
    If Not Intersect(Target, Range("J2")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        Range("B5:J16").ClearContents
        If Target.Value = "" Then Exit Sub
        Set r = h2.Columns("A")
        Set b = r.Find(Target.Value, LookAt:=xlWhole)
        If Not b Is Nothing Then
            celda = b.Address
            i = 5
            Do
                'detalle
                h1.Cells(i, "B").Value = h2.Cells(b.Row, "B").Value 'COD
                h1.Cells(i, "D").Value = h2.Cells(b.Row, "D").Value 'PROD
                h1.Cells(i, "F").Value = h2.Cells(b.Row, "F").Value 'PREC
                h1.Cells(i, "H").Value = h2.Cells(b.Row, "E").Value 'CANT
                h1.Cells(i, "J").Value = h2.Cells(b.Row, "G").Value 'TOT
                i = i + 1
                Set b = r.FindNext(b)
            Loop While Not b Is Nothing And b.Address <> celda
        Else
            MsgBox "El número de Factura no existe en la hoja ventas"
        End If
    End If
End Sub


Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. En el panel del lado derecho copia la macro


. Avísame cualquier duda

.

Muchas gracias Dante, está funcionando perfecto hasta donde lo he revisado, si tengo más dudas te molestaré otra vez, que gran ayuda me has dado, un abrazo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas