Duda de Visual basic en excel

Presionar alt+f11 cuando abran el archivo en el libro de excel
Quiero programar en el editor visual del excel para que compare ciertas cadenas que tengo en una columna, pe:
C1 C2 C3 C4
Cod Tipo Cod Tipo Final
1 Proceso 1 Proces
1 Terminado 2 Proceso
1 Proceso
2 Proceso
2 Proceso
Te explico tengo en la columna 1 un montón de celdas con códigos, algunos se repiten, pero no encuentro la forma de que acumule todos estos y solo los resuma en el mismo código pero en la C3 para que me de "como quien dice " un resumen de cada código.
Y el problema más grande lo tengo para la C4 ya que como se darán cuenta algunos tiene distintos tipo, la lógica es así si es que hay algún "en proceso " y otro del mismo código tiene "terminado" pues proceso debe ir en Código Final en el C4
Intente de muchas maneras para poder obtener lo que quiero pero ya me estoy volviendo loco.
Agradece mucho a los que me puedan ayudar
Ahí en el archivo adjunto esta maso la lógica del programa pero no se porque no me sale.
Muchas gracias.
Esto fue lo que intenté:
Sub Estado()
Dim i As Integer
Dim valor As String
Dim k As String
i = 2
j = 2
Do While Hoja1.Cells(i, 1) <> ""
    Do While Hoja1.Cells(j, 1) = Hoja1.Cells(j + 1, 1)
        k = valor
        If Hoja1.Cells(j, 2) = Hoja1.Cells(j + 1, 2) Then
            valor = Hoja1.Cells(j, 2)
            k = Hoja1.Cells(j, 2)
        Else
            If Hoja1.Cells(j, 2) = "pr" And Hoja1.Cells(j + 1, 2) = "te" Then
            valor = "pr"
            k = " pr"
            End If
            If Hoja1.Cells(j, 2) = "pr" And Hoja1.Cells(j + 1, 2) = "ca" Then
            valor = "pe"
            k = "pe"
            End If
            If Hoja1.Cells(j, 2) = "te" And Hoja1.Cells(j + 1, 2) = "pr" Then
            valor = "pr"
            k = "pr"
            End If
            If Hoja1.Cells(j, 2) = "te" And Hoja1.Cells(j + 1, 2) = "ca" Then
            valor = "te"
            k = "te"
            End If
            If Hoja1.Cells(j, 2) = "ca" And Hoja1.Cells(j + 1, 2) = "te" Then
            valor = "te"
            k = "te"
            End If
            If Hoja1.Cells(j, 2) = "ca" And Hoja1.Cells(j + 1, 2) = "pe" Then
            valor = "pr"
            k = "pr"
            End If
        End If
        j = j + 1
    Loop
    Hoja1.Cells(i, 3) = valor
i = i + 1
Loop
End Sub
{"Lat":-13.9214253044313,"Lng":-56.2468457221985}

1 Respuesta

Respuesta
1
Aquí te dejo un código, espero que te sirva.
Sub Estado()
k = 2 '
tipo_f = ""
For i = 2 To 999999
If Cells(i, 1) = "" Then
    Exit Sub
End If
'ordenar de menor a mayor la columna A (codigo)
cod_1 = Cells(i, 1)
tipo_1 = Cells(i, 2)
cod_2 = Cells(i + 1, 1)
tipo_2 = Cells(i + 1, 2)
If cod_1 = cod_2 Then
    If tipo_1 = "Proceso" Or tipo_2 = "Proceso" Then
        tipo_f = "Proceso"
    End If
ElseIf cod_1 <> cod_2 Then
    If tipo_f = "Proceso" Then
        Cells(k, 3) = cod_1
        Cells(k, 4) = tipo_f
    ElseIf tipo_f = "" Then
        Cells(k, 3) = cod_1
        Cells(k, 4) = tipo_1
    End If
k = k + 1
tipo_f = ""
End If
Next i
MsgBox "SL2"
End Sub
Muchas gracias por la respuesta tan rápida pero tengo un problema más. Me acaban de decir que aparte de la comparación de Proceso con Terminado exite otra comparación entre Terminado y Cancelado de la cual Terminado debe salir como Respuesta final de comparar es decir:
C1 C2 C3 C4
Cod Tipo Cod Tipo Final
1 Proceso 1 Proceso
1 Terminado 2 Cancelado 1 Proceso
2 Termiado 2 Cancelado
Esto seria lo ultimo que te pediría experto.
Muchas gracias de antemano
Tengo algunas dudas ya que no logro entender lo que necesitas:
La validación de cancelado va en la columna 3 y 4, ¿dónde esta el resumen de los proceso listados en la columna 1 y 2?
¿Necesitas qué el resultado de esta nueva validación quede en que columnas?
¿Y cuál es la lógica para saber si un proceso terminado fue cancelado?
Ups sorry error de tipeo no me percate de eso en realidad es asi:           
C1 C2 C3 C4
Cod Tipo Cod Tipo Final
1 Proceso 1 Proceso
1 Terminado 2 Cancelado 1 Proceso
2 Termiado
2 Cancelado
Osea las lógicas son las siguientes:
Proceso vs Terminado = Proceso
Terminado vs Proceso = Proceso
"esta lógica esta resulta, gracias a como lo resolviste en mi anterior repgunta "
Ahora también hay esta lógica
Terminado vs Cancelado =  Terminado
Cancelado vs Terminado = Terminad
" Si es que en la columna tipo exiten terminado con cancelado ganaría el terminado, pero esto solo se daría en el caso de que en la columna no haya ningún proceso porque este le gana a todos."
Ojala puedas enterme y ayudar.
Nuevamente gracias por la respuesta tan rápida
Por favor ayudame
Espero que te sirva
Slds
Sub Estado()
k = 2 '
tipo_f = ""
For i = 2 To 999999
If Cells(i, 1) = "" Then
    Exit Sub
End If
'ordenar de menor a mayor la columna A (codigo)
cod_1 = Cells(i, 1)
tipo_1 = Cells(i, 2)
cod_2 = Cells(i + 1, 1)
tipo_2 = Cells(i + 1, 2)
If i = 41 Then
Stop
End If
If cod_1 = cod_2 Then
    If tipo_1 <> tipo_f And tipo_f <> "Proceso" Then
        If tipo_1 = "Proceso" Then
            tipo_f = "Proceso"
        Else
            If tipo_1 <> tipo_f And tipo_f <> "Terminado" Then
                If tipo_1 = "Terminado" Then
                    tipo_f = "Terminado"
                ElseIf tipo_f = "" Then
                    tipo_f = tipo_1
                End If
            End If
        End If
    End If
ElseIf cod_1 <> cod_2 Then
        If tipo_1 <> tipo_f And tipo_f <> "Proceso" Then
            If tipo_1 = "Proceso" Then
                tipo_f = "Proceso"
            Else
                If tipo_1 <> tipo_f And tipo_f <> "Terminado" Then
                    If tipo_1 = "Terminado" Then
                        tipo_f = "Terminado"
                    ElseIf tipo_f = "" Then
                        tipo_f = tipo_1
                    End If
                End If
            End If
        End If
    Cells(k, 3) = cod_1
    Cells(k, 4) = tipo_f
    k = k + 1
    tipo_f = ""
End If
Next i
End Sub
Slds y calificame

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas