Excel - Vigencia del Seguro en Base de Datos

   
Vista:

Vigencia del Seguro en Base de Datos

Publicado por Luis Humberto (4 intervenciones) el 26/01/2016 03:22:29
Buenas noches a todos, soy nuevo en este foro, previamente estuve buscando en las preguntas resueltas pero no encontré algo que coincidiera con mi inquietud , a continuación expongo:

Tengo una base de datos de 600.000 filas aprox, en la cual estan los campos Cod sucursal, Codigo Producto, Póliza, Tipo de Movimiento, Fecha Inicio de Vigencia y Fecha Fin de Vigencia , necesito ponerle a cada fila la vigencia del seguro a la cual corresponda cada póliza de acuerdo a la fecha de inicio de vigencia de cada registro, en el ejemplo que adjunto pude lograr tener el dato que con buscarv pero apenas para una poliza ya que para hacerlo con varias pólizas debo poner el rango en el cual debe buscar la fecha de inicio de vigencia dentro de la hoja "Rango de Vigencias" de manera manual y la tarea es bastante dispendiosa con 600.000 filas aprox y más de 1.000 vigencias distintas

Agradezco mucho la ayuda que me puedan brindar
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Vigencia del Seguro en Base de Datos

Publicado por GMG (105 intervenciones) el 26/01/2016 10:06:50
Creo que con esto te vale:

Pon la fórmula en la celda A2 (o cualquier otra celda de la fila 2) y arrástrala hacia abajo:

=SI(E2="EXPEDICION";"EXPEDICION Vigencia "&TEXTO(F2;"dd/mm/aaaa")&" - "&TEXTO(G2;"dd/mm/aaaa");SI(E2="RENOVACION";"RENOVACION Vigencia "&TEXTO(F2;"dd/mm/aaaa")&" - "&TEXTO(G2;"dd/mm/aaaa");A1))

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Vigencia del Seguro en Base de Datos

Publicado por Luis Humberto (4 intervenciones) el 28/01/2016 05:56:24
Muchas Gracias GMG por tu respuesta,

La formula es eficaz, teniendo la base de datos ordenada, lo comento ya que mes a mes ingresan nuevos registros de las pólizas ya existentes, esto solucionaría parcialmente mi solicitud ya que ahora tengo que poner registros que corresponden a siniestros y deben estar atados a una “Vigencia del Seguro” de acuerdo a la fecha de ocurrencia de cada uno, pero el inconveniente es que los siniestros ocurren en cualquier fecha entre una vigencia, por ejemplo tenemos una póliza con fecha de inicio de vigencia 02/02/2014 y fecha fin de vigencia 02/02/2015 esta póliza tiene un siniestro que ocurrió el 10/08/2014, como hago para ponerle a la fila que tiene ese siniestro que corresponde a la Vigencia del seguro 02/02/2014 – 02/02/2015, es importante mencionar que las filas con siniestros no tienen los campos “Expedición” y “Renovación”, necesitaría una fórmula que me busque el 10/08/2014 dentro del rango 02/02/2014 – 02/02/2015.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Vigencia del Seguro en Base de Datos

Publicado por GMG (105 intervenciones) el 29/01/2016 13:47:43
Lo siento Luis, pero no se me ocurre ninguna fórmula para hacerlo, va a tocar hacerlo por macros.

Para empezar debemos cambiar la fórmula que ya teníamos, para que si el tipo de registro es "Siniestro" no ponga nada.

La fórmula quedaría así:

=SI(B2="Siniestro";"";SI(F2="EXPEDICION";"EXPEDICION Vigencia "&TEXTO(G2;"dd/mm/aaaa")&" - "&TEXTO(H2;"dd/mm/aaaa");SI(F2="RENOVACION";"RENOVACION Vigencia "&TEXTO(G2;"dd/mm/aaaa")&" - "&TEXTO(H2;"dd/mm/aaaa");A1)))

Esta fórmula se aplica en A2 y se arrastra.

La macro creo que valdría algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Sub Macro1()
Dim fecha As Date
 
Sheets("Base").Select
Range("B2").Select
i = i + 1
 
While Not IsEmpty(ActiveCell.Offset(i, 0))
    If (ActiveCell.Offset(i, 0).Value = "Siniestro" And ActiveCell.Offset(i, -1).Value = "") Then
        Poliza = ActiveCell.Offset(i, 3).Value
        fecha = ActiveCell.Offset(i, 7).Value
 
        J = 0
        While Not IsEmpty(ActiveCell.Offset(J, 0))
            If (ActiveCell.Offset(J, 3).Value = Poliza) And ((ActiveCell.Offset(J, 4).Value = "RENOVACION") Or (ActiveCell.Offset(J, 4).Value = "EXPEDICION")) And (ActiveCell.Offset(J, 5).Value < fecha) And (ActiveCell.Offset(J, 6).Value > fecha) Then
                Inicio = ActiveCell.Offset(J, 5).Value
                Fin = ActiveCell.Offset(J, 6).Value
            End If
            J = J + 1
        Wend
 
        ActiveCell.Offset(i, -1).Value = "Corresponde a la Vigencia del seguro " & Inicio & "-" & Fin
 
    End If
 
    i = i + 1
Wend
 
End Sub

De todas formas te adjunto el excel con la fórmula cambiada, y la ya puesta, te añado un botón para arrancar la macro.

La macro sólo revisa los registros Siniestro.
Te arrastro la fórmula para todos los registros, aunque se vea sin nada en los siniestros, pero así puedes testear si la macro funciona bien.

Recuerda que deberás habilitar las macros para que funcione (te sale un emergente en amarillo al abrir el documento en la parte superior)

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Vigencia del Seguro en Base de Datos

Publicado por Luis Humberto (4 intervenciones) el 06/02/2016 02:26:47
GMG buenas noches, gracias por la macro enviada, en un ejercicio que realice funciono para 78 filas con siniestros, quiero consultarte si es posible que el texto que me arroje la macro puede ser igual al de las filas de producción es decir que cuando la macro encuentre a que vigencia pertenece cada uno de los siniestros me informe en la columna A por ejemplo: EXPEDICIÓN Vigencia 05/02/2013 - 05/02/2014 o RENOVACIÓN Vigencia 05/02/2014 - 05/02/2015 o PRORROGA Vigencia 05/02/2015 - 05/02/2016 según sea el caso al cual corresponda la fecha del siniestro (Adjunto ejercicio realizado)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo

Vigencia del Seguro en Base de Datos

Publicado por Andres Leonardo (483 intervenciones) el 26/01/2016 15:47:21
si el dato de busqueda y del rango a buscar son precisos podrias tener 5MM de registros y funcionaria
Que pasa si no lo encuentra, ademas desearia saber hay un rango por renovacion y otro por expedicion?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Vigencia del Seguro en Base de Datos

Publicado por Luis Humberto (4 intervenciones) el 28/01/2016 05:59:01
Leonardo buenas noches,

Si la base esta ordenada la formula debería encontrar la vigencia correcta, cada endoso contractual llámese expedición o renovación tiene un rango de registros que le pertenecen y deben sumar ya sea sus valores negativos o positivos al ejercicio contable
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar