Más condiciones para Buscarv

Señores todo expertos, reciban un cordial saludo, comedidamente les solicito el favor de ayudarme a completar un formulario de Estado de cuenta del cliente que tengo en una hoja con este mismo nombre y por medio de fórmulas Buscarv me encuentra en otra hoja llamada cartera, el código (col. A), numero de factura (col.C), fecha de facturación (col. D)Y valor de la misma (col.F), el problema esta cuando el cliente tiene varias facturas, que pueden ser hasta 4, y con la fórmula Buscarv solo consigo los datos de la primera fact., espero haberme hecho entender.
Gracias Andres

1 respuesta

Respuesta
1
Para hacer puedes usar una macro que detecte cuando cambia el valor del código del cliente o el valor con el cual estés buscando(en este caso yo ubique dicho valor en la celda B2 de la hoja cartera) y que esta macro a su vez llame otra macro que me traerá todos los informes o datos (que para este caso los ubique en la hoja "Estado de cuenta" a partir de la fila 2 entre las columnas A y F) de ese cliente desde la hoja Estado de cuenta, para hacer esto, sigue estos pasos.
1.- Entra al libro donde quieras poner el código
2.- Entra al Editor del Visual Basic (Alt+F11)
3.- Da un doble click en la hoja "cartera" que es donde nos interesa dejar el código, esta la veras en el Explorador de proyectos
4- Copia el siguiente código
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$2" Then resumen
End Sub
Sub resumen()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'seteo f que me ayudara en el ciclo
    Range(Selection, Selection.End(xlToRight)).Select
    Range("A5:F5").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.ClearContents
    Range("A5").Select
f = 2
'activo la celda A2 de la hoja "Estado de cuenta" en tu caso solo modifica el nombre por el de la hoja
'en la que tienes todos los datos
Worksheets("Estado de cuenta").Select
Worksheets("Estado de cuenta").Range("A" & f & "").Activate
    'inicio un ciclo que se ejecuta hasta que encuentre una celda vacia
    Do While Not IsEmpty(ActiveCell)
        'pregunto si el valor de la celda activa (A2) de la hoja Todos
'es igual al valor de la celda (B2) de la hoja Resumen
        If ActiveCell.Value = Worksheets("cartera").Range("B2").Value Then
            'si son iguales, selecciona el rango de la A2 a la D2, en tu caso solo modifica el rango para la selección
            Worksheets("Estado de cuenta").Range("A" & f & ":F" & f & "").Select
            'copia el rango seleccionado
            Selection.Copy
            'activamos la hoja cartera
            Worksheets("cartera").Select
            Worksheets("cartera").Range("A5").Activate
                'Ahora hacemos un if en el cual evaluamos si la celda A5 de la hoja cartera esta vacia
                If ActiveCell.Text = "" Then
                'si se cumple la condicion entonces pega la informacion en dicha celda (A5)
                ActiveSheet.Paste
                'sino
                Else
                    'preguntamos si la celda que le sigue, en este caso A6 esta vacia
                    If ActiveCell.Offset(1, 0).Value = "" Then
                    'si se cumple la condicion entonces pega la informacion en dicha celda (A6)
                    ActiveCell.Offset(1, 0).Activate
                    ActiveSheet.Paste
                    Else
                    'sino entonces se corre hasta la ultima celda con datos + 1
                    Selection.End(xlDown).Select
                    ActiveCell.Offset(1, 0).Activate
                    'y pega la informacion
                    ActiveSheet.Paste
                    End If
                End If
                'incrementamos f y activamos la siguiente celda de la hoja Estado de cuenta
                f = f + 1
                Worksheets("Estado de cuenta").Select
                Worksheets("Estado de cuenta").Range("A" & f & "").Activate
        Else
        f = f + 1
        Worksheets("Estado de cuenta").Select
        Worksheets("Estado de cuenta").Range("A" & f & "").Activate
        End If
        Application.CutCopyMode = False
        Loop
        Worksheets("cartera").Select
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.Calculate
End Sub
Si esto soluciona tu pregunta, no olvides dejar un comentario y cerrar la pregunta, en caso contrario no dudes en preguntarme nuevamente.
Buenos días flashacker, te agradezco mucho tu interés en ayudarme, soy muy novato en esto y quisiera saber si es posible enviarte mi archivo, porque no he logrado que funcione, hay varios parámetros que cambiar y lo que logre es confundirme. Muchas gracias
andres
Claro, enviame el archivo a [email protected], pero rapido para poder solucionarlo antes de entrar a trabajar...
Buenas tardes flashacker, una respuesta excelente, estoy muy agradecido por tu interés y la prontitud con que me ayudaste, muchas... muchas ... gracias
Andres

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas