Facilitar lectura de base de datos de excel

Preciso su ayuda para encontrar y organizar una base de datos. Pero antes de especificar que es lo que necesito daré algo de contexto.
La base de datos que adjunto se basa principalmente en dos elementos; a saber: Código del crédito (Filas) y Código de Causal de Rechazo (Columnas). Como se puede observar cada código de crédito tiene en algunas intersecciones un 1, lo que quiere decir que ese crédito fue rechazado por esa razón que se menciona en la columna. Ejemplo: El Crédito 060001920000019906 tiene un 1 en la causal de rechazo 1013 (Hipoteca incompleta) y, a su vez, en el código de causal de rechazo 5011 ( Pagaré no corresponde a la obligación vigente). Este ejemplo se repite para muchos otros créditos.
Ahora ¿Qué es lo que necesito hacer? Necesito que, de alguna forma, para cada código de crédito solo se muestren las columnas en las cuales ese código de crédito presente causales de rechazo (un número 1 en las intersecciones). En otras palabras, necesito facilitar la lectura de la base de datos ya que esta base de datos tiene muchos espacios en blanco y para poder identificar las causales de rechazo para ese crédito toca hacer un proceso tedioso de revisión manual que tomaría mucho tiempo considerando la magnitud de la base de datos. ¿Existe alguna macro o algo por el estilo que me ayude con esto?
Ya intenté con filtros pero mis conocimientos en excel son limitados, me gustaría una explicación, de ser posible, que ahonde en el paso a paso.
Espero haber sido claro.
Adjunto el archivo excel sobre el cual necesito trabajar.
Gracias de antemano.

Este es el archivo adjunto

https://drive.google.com/open?id=1Af0lQgyKYDIk3uOwRnZU-GrZfy4VXztw 

1 Respuesta

Respuesta
2

Hector Ramirez,

Adjunto macro para el desarrollo de tu consulta, las data los organizar dos columnas más de la última columna con datos, es decir a partir de la columna GF.

Sub Data()
Set hj1 = Worksheets("Detalle")
Set Rng1 = hj1.Range(hj1.Range("B3"), hj1.Range("B3").End(xlToRight))
Set Rng2 = hj1.Range(hj1.Range("A4"), hj1.Range("A4").End(xlDown))
For i = 1 To Rng2.Rows.Count
x = 0
    For j = 1 To Rng1.Columns.Count
        If hj1.Cells(i + 3, j + 1).Value = 1 Then
            hj1.Cells(i + 3, Rng1.Columns.Count + 4 + x) = hj1.Cells(3, j + 1)
            x = x + 1
        End If
    Next j
Next i
End Sub

Muchas gracias. Funcionó a la perfección. Le hice un pequeño cambio al macro debido a que lo que necesitaba era que mostrara los códigos que se encontraban en la fila 1. ¿Me podrías notificar si quedó bien? A mí ya me funcionó, pero es para estar seguro. Muchas gracias.

Sub Data()
Set hj1 = Worksheets("Detalle")
Set Rng1 = hj1.Range(hj1.Range("B1"), hj1.Range("B1").End(xlToRight))
Set Rng2 = hj1.Range(hj1.Range("A4"), hj1.Range("A4").End(xlDown))
For i = 1 To Rng2.Rows.Count
x = 0
For j = 1 To Rng1.Columns.Count
If hj1.Cells(i + 1, j + 1).Value = 1 Then
hj1.Cells(i + 1, Rng1.Columns.Count + 4 + x) = hj1.Cells(1, j + 1)
x = x + 1
End If
Next j
Next i
End Sub

Una última cosa ¿sabes dónde puedo ver un tutorial para realizar este tipo de macros? Me gustaría aprender para ocasiones futuras.

Si ejecuta bien y muestran los códigos en lugar de las descripciones. Que bueno que te haya servido el aporte.

Adjunto enlace de un manual de macros en pdf, también lo puedes ubicar googleando.

Manual Macros pdf

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas