Ayuda en analisis de resultados repetidos
Publicado por vianney (15 intervenciones) el 28/03/2020 23:10:29
Saludos estiamdos señores, estoy buscando ayuda con un codigo para analizar resultados repetidos, tengo unos datos estructurados en tablas, tabla_analisis(1) contiene los 4 numeros de identificacion del paciente, tabla_cortadaF(1) contiene los datos personales del paciente y el resultados del examen y quiero guardar los resultados del paciente en una sola fila, concatenados los datos personales del paciente a cada uno de los resultados de los examenes, en la tabla_fija(). La estructura de los datos se las muestro a continuacion:
9635.-GARCIA GIORGINAAGE11 AÑOSSEXFTS=GlicCro107.584mg/dL
9639.-COLMENARES JHAYAGE23 AÑOSSEXFTS=TGO122.3280U/L
9639.-COLMENARES JHAYAGE23 AÑOSSEXFTS=DBiliB0.11975mg/dL
9640.-PEREZ ALEXANDRAAGE10 AÑOSSEXFTS=GlicCro86.0610mg/dL
9650.-TORO GOMES LUISAGE76 AÑOSSEXMTS=GlicCro101.451mg/dL
9657.-CALDERON YOLIMAAGE51 AÑOSSEXFTS=GlicCro96.1858mg/dL
9657.-CALDERON YOLIMAAGE51 AÑOSSEXFTS=Trig71.9156mg/dL
9657.-CALDERON YOLIMAAGE51 AÑOSSEXFTS=LDL1110.540mg/dL L
9663.-GELVIS CLEMENTEAGE81 AÑOSSEXMTS=GlicCro81.1211mg/dL
9667.-ROSALES MARIA LAGE64 AÑOSSEXFTS=GlicCro104.922mg/dL
9667.-ROSALES MARIA LAGE64 AÑOSSEXFTS=Cole172.160mg/dL
9671.-GUEVARA MARIA ISABELAGE74 AÑOSSEXFTS=GlicCro99.2925mg
9671.-GUEVARA MARIA ISABELAGE74 AÑOSSEXFTS=Cole158.000mg/dL
9671.-GUEVARA MARIA ISABELAGE74 AÑOSSEXFTS=HDLidg51.9285mg/
9671.-GUEVARA MARIA ISABELAGE74 AÑOSSEXFTS=CaDiag29.21807mg
9671.-GUEVARA MARIA ISABELAGE74 AÑOSSEXFTS=TGP110.8688U/L
9671.-GUEVARA MARIA ISABELAGE74 AÑOSSEXFTS=RAG10.99805
9671.-GUEVARA MARIA ISABELAGE74 AÑOSSEXFTS=BIbio0.51487mg/d
9677.-GUEVARA JOSEFAAGE74 AÑOSSEXFTS=CaDiag210.0000mg/dL
9679.-MENDEZ LINDEYLIAGE40 AÑOSSEXFTS=GlicCro102.074mg/dL
9679.-MENDEZ LINDEYLIAGE40 AÑOSSEXFTS=AcUric3.19464mg/dL
9684.-LOPEZ ISABELAGE1 AÑOSEXFTS=GlicCro68.4888mg/dL L
9684.-LOPEZ ISABELAGE1 AÑOSEXFTS=CaDiag29.60000mg/dL
9684.-LOPEZ ISABELAGE1 AÑOSEXFTS=Albm4.33854g/dL TS
9693.-MONTERO MIRIAMAGE72 AÑOSSEXFTS=GlicCro88.8969mg/dL
9693.-MONTERO MIRIAMAGE72 AÑOSSEXFTS=Cole147.715mg/dL
9693.-MONTERO MIRIAMAGE72 AÑOSSEXFTS=IPhos3.47631mg/dL
9699.-MOLINA VIRGILIOAGE45 AÑOSSEXMTS=GlicCro103.620mg/dL
9699.-MOLINA VIRGILIOAGE45 AÑOSSEXMTS=Trig160.144mg/dL
9699.-MOLINA VIRGILIOAGE45 AÑOSSEXMTS=LDL185.3673mg/dL
9711.-GARCIA MARIA JOSEAGE33 AÑOSSEXFTS=GlicCro95.1604mg/dL
9711.-GARCIA MARIA JOSEAGE33 AÑOSSEXFTS=Cole143.561mg/dL
9711.-GARCIA MARIA JOSEAGE33 AÑOSSEXFTS=LDL178.2576mg/dL
El analisis que hago es el siguiente: Por medio de un ciclo For i=1 to Total_Examenes, lo que analizo es para cuando i=1 el codigo me llene la primera casilla de resultados. Luego por un condicional if i es mayor que 1 debo analizar si el numero de ppaciente esta repetido o no. El codigo debe comparar el numero de paciente en i mayor que 1, con el numero de paciente anterior (i-1), si el numero de paciente nuevo es igual al numero de paciente anterior el resultado esta repetido, por tanto me concatena al valor anterior el resultado actual. En caso contrario el valor de identificacion del paciente actual es diferente del valor de identificacion del paciente anterior, por tanto el resultado es nuevo, y lo asigna a la casilla i mayor que 1.El codigo es el siguiente:
Dim numero_examenes as integer
Dim tabla_cortadaF(1) As String
El valor de tabla_cortada(1) contiene la descripcion con los datos personales del paciente y el resultado del examen.
Dim tabla_analisis(1) As String
Contiene el numero de identificacion del paciente son 4 digitos, y este valor es el que si el paciente tiene varios examenes se repite, este mismo valor por cada Nuevo resultado. Esta tabla ya tiene los números de pacientes cargados.
Dim tabla_fija() As String
En esta tabla pretendo guardar los resultados del paciente, una sola descripción con los resultados del paciente uno al lado del otro.
El tema es que el codigo falla, y en la ventana de inmediato, no me imprime nada. Espero su ayuda por favor. Gracias.
Vianney Colmenares.
9635.-GARCIA GIORGINAAGE11 AÑOSSEXFTS=GlicCro107.584mg/dL
9639.-COLMENARES JHAYAGE23 AÑOSSEXFTS=TGO122.3280U/L
9639.-COLMENARES JHAYAGE23 AÑOSSEXFTS=DBiliB0.11975mg/dL
9640.-PEREZ ALEXANDRAAGE10 AÑOSSEXFTS=GlicCro86.0610mg/dL
9650.-TORO GOMES LUISAGE76 AÑOSSEXMTS=GlicCro101.451mg/dL
9657.-CALDERON YOLIMAAGE51 AÑOSSEXFTS=GlicCro96.1858mg/dL
9657.-CALDERON YOLIMAAGE51 AÑOSSEXFTS=Trig71.9156mg/dL
9657.-CALDERON YOLIMAAGE51 AÑOSSEXFTS=LDL1110.540mg/dL L
9663.-GELVIS CLEMENTEAGE81 AÑOSSEXMTS=GlicCro81.1211mg/dL
9667.-ROSALES MARIA LAGE64 AÑOSSEXFTS=GlicCro104.922mg/dL
9667.-ROSALES MARIA LAGE64 AÑOSSEXFTS=Cole172.160mg/dL
9671.-GUEVARA MARIA ISABELAGE74 AÑOSSEXFTS=GlicCro99.2925mg
9671.-GUEVARA MARIA ISABELAGE74 AÑOSSEXFTS=Cole158.000mg/dL
9671.-GUEVARA MARIA ISABELAGE74 AÑOSSEXFTS=HDLidg51.9285mg/
9671.-GUEVARA MARIA ISABELAGE74 AÑOSSEXFTS=CaDiag29.21807mg
9671.-GUEVARA MARIA ISABELAGE74 AÑOSSEXFTS=TGP110.8688U/L
9671.-GUEVARA MARIA ISABELAGE74 AÑOSSEXFTS=RAG10.99805
9671.-GUEVARA MARIA ISABELAGE74 AÑOSSEXFTS=BIbio0.51487mg/d
9677.-GUEVARA JOSEFAAGE74 AÑOSSEXFTS=CaDiag210.0000mg/dL
9679.-MENDEZ LINDEYLIAGE40 AÑOSSEXFTS=GlicCro102.074mg/dL
9679.-MENDEZ LINDEYLIAGE40 AÑOSSEXFTS=AcUric3.19464mg/dL
9684.-LOPEZ ISABELAGE1 AÑOSEXFTS=GlicCro68.4888mg/dL L
9684.-LOPEZ ISABELAGE1 AÑOSEXFTS=CaDiag29.60000mg/dL
9684.-LOPEZ ISABELAGE1 AÑOSEXFTS=Albm4.33854g/dL TS
9693.-MONTERO MIRIAMAGE72 AÑOSSEXFTS=GlicCro88.8969mg/dL
9693.-MONTERO MIRIAMAGE72 AÑOSSEXFTS=Cole147.715mg/dL
9693.-MONTERO MIRIAMAGE72 AÑOSSEXFTS=IPhos3.47631mg/dL
9699.-MOLINA VIRGILIOAGE45 AÑOSSEXMTS=GlicCro103.620mg/dL
9699.-MOLINA VIRGILIOAGE45 AÑOSSEXMTS=Trig160.144mg/dL
9699.-MOLINA VIRGILIOAGE45 AÑOSSEXMTS=LDL185.3673mg/dL
9711.-GARCIA MARIA JOSEAGE33 AÑOSSEXFTS=GlicCro95.1604mg/dL
9711.-GARCIA MARIA JOSEAGE33 AÑOSSEXFTS=Cole143.561mg/dL
9711.-GARCIA MARIA JOSEAGE33 AÑOSSEXFTS=LDL178.2576mg/dL
El analisis que hago es el siguiente: Por medio de un ciclo For i=1 to Total_Examenes, lo que analizo es para cuando i=1 el codigo me llene la primera casilla de resultados. Luego por un condicional if i es mayor que 1 debo analizar si el numero de ppaciente esta repetido o no. El codigo debe comparar el numero de paciente en i mayor que 1, con el numero de paciente anterior (i-1), si el numero de paciente nuevo es igual al numero de paciente anterior el resultado esta repetido, por tanto me concatena al valor anterior el resultado actual. En caso contrario el valor de identificacion del paciente actual es diferente del valor de identificacion del paciente anterior, por tanto el resultado es nuevo, y lo asigna a la casilla i mayor que 1.El codigo es el siguiente:
Dim numero_examenes as integer
Dim tabla_cortadaF(1) As String
El valor de tabla_cortada(1) contiene la descripcion con los datos personales del paciente y el resultado del examen.
Dim tabla_analisis(1) As String
Contiene el numero de identificacion del paciente son 4 digitos, y este valor es el que si el paciente tiene varios examenes se repite, este mismo valor por cada Nuevo resultado. Esta tabla ya tiene los números de pacientes cargados.
Dim tabla_fija() As String
En esta tabla pretendo guardar los resultados del paciente, una sola descripción con los resultados del paciente uno al lado del otro.
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
For i = 1 To numero_examenes Step 1
If i = 1 Then
' asigana a la primera casilla el primer resultado
tabla_fija(i) = tabla_cortadaF(1)
ElseIf i > 1 Then
If tabla_analisis(1) = mid(tabla_fija(i - 1), 1, 5) Then
' Me compara si el nuevo numero de paciente es igual al valor del paciente de la casilla anterior, lo que implica que es un dato repetido
' me concatena el nuevo resultado al valor del paciente anterior
tabla_fija(i) = tabla_fija(i - 1) & tabla_cortadaF(1)
Else
' El caso contrario del if implica que el el numero de paciente es diferente al paciente anterior
'por tanto asigna el valor del examen a la casilla
tabla_fija(i) = tabla_cortadaF(1)
End If
End If
Debug.Print tabla_fija(i)
Next i
El tema es que el codigo falla, y en la ventana de inmediato, no me imprime nada. Espero su ayuda por favor. Gracias.
Vianney Colmenares.
Valora esta pregunta


0