Excel - Contar serie de eventos de acuerdo a datos en columna

   
Vista:
Imágen de perfil de Tirso

Contar serie de eventos de acuerdo a datos en columna

Publicado por Tirso tirsow.rodriguez@gmail.com (6 intervenciones) el 20/10/2015 22:38:00
Hola amigos!

Tengo una situación en Excel, y pido su ayuda. Tengo una columna, en cuyas celdas tengo resultados de "1" y "0", que resultan de una serie de mediciones. Necesito, en una columna al lado, cumplir los siguientes parámetros:

1. Cuando se encuentren 3 mediciones con valor "1" seguidas, al frente de la tercera medición escriba un texto que dida "Incidencia".

2. La "Incidencia" se cierra, después de iniciado, si y sólo si hay siete mediciones seguidas iguales a 0. Al frente de la séptima medición con valor "0", debe arrojar un texto que diga "Fin de Incidencia".

3. Condicional: Si después de iniciada la "Incidencia" no existen siete mediciones seguidas, sino valores de "1" y "0", la Incidencia no se cierra.

4. Condicional: Únicamente se puede obtener el texto de inicio de "Incidencia" una primera vez. Me explico: Si hay más de 3 valores de "1" seguidos, se debe escribir al frente del tercer valor "1" el inicio de la "Incidencia" solamente.

Adjunto un ejemplo. Pude hacer una formulación usando IF en dos columnas, pero no sé como eliminar que siga saliendo "Incidencia" cuando hay más de 3 valores de "1" seguidos. (Nota: Las primeras 7 filas están ocultas)

Muchas gracias por sus aportes!
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
Imágen de perfil de edinson

Contar serie de eventos de acuerdo a datos en columna

Publicado por edinson (6 intervenciones) el 21/10/2015 02:56:58
Analizando la cuestión sugiero lo siguiente:

1. Debes cambiar de libro de excel a libro de excel habilitado para macros
2. En la vista código pega lo siguiente:

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Option Explicit
Dim direcc As String
Dim celda As String
Dim dato() As String
 
Sub AnalisisIncidencias()
Application.ScreenUpdating = False
On Error GoTo ED
Dim INCIDENC As Variant
Dim RESULT As Variant
Dim sumador As Variant
Dim SUMENOS As String
Dim CONTACEROS As Variant
    Do While Not IsEmpty(ActiveCell.Offset(0, 0))
       ActiveCell.Offset(1, 0).Select
   Loop
   direcc = ActiveCell.Address
   direcc = Mid(direccion, 2)
   dato = Split(direccion, "$")
   celda = dato(1)
    For RESULT = 2 To celda
        If Range("A" & RESULT).Value = 1 Then
            sumador = sumador + 1
                CONTACEROS = 0
                SUMENOS = sumador - 1
                If sumador = 3 Then
                INCIDENC = INCIDENC + 1
                    If INCIDENC > 1 Then
                        Range("c" & RESULT - SUMENOS) = ""
                        Else
                        Range("C" & RESULT - SUMENOS) = "INCIDENCIA"
                    End If
                End If
        Else
            CONTACEROS = CONTACEROS + 1
                sumador = 0
            If CONTACEROS = 8 Then
                Range("C" & RESULT) = "FIN DE LA INCIDENCIA"
                INCIDENC = 0
            End If
        End If
    Next
ED:
    Resume Next
End Sub

Esto Resuelva tu problema en la columna C

Espero sea de ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Tirso

Contar serie de eventos de acuerdo a datos en columna

Publicado por Tirso (6 intervenciones) el 21/10/2015 03:31:13
Mil gracias por tu respuesta.

No obstante, me gustaría saber si existe alguna forma mediante formulación que me permitiera realizar esta evaluación, es decir, sin macros. Es posible?

De nuevo gracias!
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 edinson

Contar serie de eventos de acuerdo a datos en columna

Publicado por edinson (6 intervenciones) el 21/10/2015 03:45:31
Por la cantidad de variables se me hizo un poco difícil, pero muy seguramente dedicándole el tiempo necesario. Si

De todas maneras revisando el código que te envie tiene un errorsillo esta declarada la variable direcc y en el desarrollo escribí en dos ocasiones Dirección por favor corrigelo si vas a utlizarlo.

Debes probarlo funciona de maravillas...
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
Imágen de perfil de Tirso

Contar serie de eventos de acuerdo a datos en columna

Publicado por Tirso (6 intervenciones) el 21/10/2015 03:54:58
Gracias de nuevo. Voy a probarlo, pero ya mañana que en mi país son las 10:00 pm. Jeje

Si alguien más quiere aportar, bienvenido sea!
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 Tirso

Contar serie de eventos de acuerdo a datos en columna

Publicado por Tirso (6 intervenciones) el 21/10/2015 17:40:39
Hola Edinson

No me funciona la macro. No me aparece lo que necesito. Me puedes ayudar? Mil gracias.
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
Imágen de perfil de edinson

Contar serie de eventos de acuerdo a datos en columna

Publicado por edinson (6 intervenciones) el 22/10/2015 01:27:28
Este es el código con la corrección que te comente anoche en las lineas 18 y 19 ahora debes pegar esto así en el editor de código


y para ejecutarlo vas por macros y ejecutas la macro llamada AnalisisIncidencias, no tiene pierde, OJo, Esta programado para el libro que anexas.

Ah, las macros deben habilitarse primero.... Suerte

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Option Explicit
Dim direcc As String
Dim celda As String
Dim dato() As String
 
Sub AnalisisIncidencias()
Application.ScreenUpdating = False
On Error GoTo ED
Dim INCIDENC As Variant
Dim RESULT As Variant
Dim sumador As Variant
Dim SUMENOS As String
Dim CONTACEROS As Variant
    Do While Not IsEmpty(ActiveCell.Offset(0, 0))
       ActiveCell.Offset(1, 0).Select
   Loop
   direcc = ActiveCell.Address
direcc = Mid(direcc, 2)
dato = Split(direcc, "$")
   celda = dato(1)
    For RESULT = 2 To celda
        If Range("A" & RESULT).Value = 1 Then
            sumador = sumador + 1
                CONTACEROS = 0
                SUMENOS = sumador - 1
                If sumador = 3 Then
                INCIDENC = INCIDENC + 1
                    If INCIDENC > 1 Then
                        Range("c" & RESULT - SUMENOS) = ""
                        Else
                        Range("C" & RESULT - SUMENOS) = "INCIDENCIA"
                    End If
                End If
        Else
            CONTACEROS = CONTACEROS + 1
                sumador = 0
            If CONTACEROS = 8 Then
                Range("C" & RESULT) = "FIN DE LA INCIDENCIA"
                INCIDENC = 0
            End If
        End If
    Next
ED:
    Resume Next
End Sub
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 edinson

Contar serie de eventos de acuerdo a datos en columna

Publicado por edinson (6 intervenciones) el 22/10/2015 20:22:56
Anexo libro ejemplo editado con el código,
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