Suma de Incidencias

08/09/2006 - 16:18 por JJGarcia | Informe spam
Sres.,
Ya anteriormente habia planteado esta pregunta pero la
'replanteare' de nueva cuenta:

.."En una hoja de Excel tengo una Columna con Numeros de
Productos[productos](numerica), en otra tengo una mas que se llama
incidencia [incidencia](alfanumerica) y en una mas tengo una que se
llama fecha[fecha].

Necesito saber la cantidad de incidencias que se dieron en la columna
productos solo si el numero es mayor de 4, el campo producto contiene
el id del producto, este se puede repetir y de la misma manera hay
muchisimos productos, mas de 1000.

Deberia ser algo asi como que cuente la cantidad de incidencias que se
dan en el producto para al final sumarizar el total de incidencias por
producto, como se les comente anteriormente, hay mas de 1000 productos
y necesito el sumarizado de incidencias por cada producto, cabe aclarar

que los valores en la columna [incidencias] son constantes y no pueden
ser modificados por el usuario.

producto incidencia Fecha
3086 Bad 28/Jul/06
33086 Bad 28/Jul/06
33089 Bad 28/Jul/06
33086 Good 29/Jul/06
33086 Good 29/Jul/06
3086 Good 29/Jul/06
33086 Bad 31/Jul/06
33083 Bad 31/Jul/06
73086 Bad 31/Jul/06
33086 Bad 01/Ago/06
23087 Bad 01/Ago/06
53086 Bad 01/Ago/06
33062 Bad 02/Ago/06
33021 Bad 02/Ago/06
33086 Bad 02/Ago/06

La idea es que solo me muestre los registros en incidencias mayores a 4

basado en el producto y tomando como referencia la incidencia. "

Por esta consulta RECIBI respuestas y algunas muy buenas ideas sobre
como proceder, por ahi elabore una tabla dinamica la cual me despliega
las incidencias que son >= 4, aparentemente todo funciona de maravilla
pero me acaban de 'REPLANTEAR' la necesidad y es que se necesitan saber
las incidencias que sean >=4 siempre y cuando estas sean 'BAD' solo SI
estas incidencias son consecutivas, es decir, que se den en 4 fechas
seguidas, si se da alguna incidencia distinta de 'BAD' anula que se
muestre en el reporte o consulta, en pocas palabras, agregado a la
primer consulta, ahora me piden que se muestren las incidencias >= 4
solo si son consecutivas y si la incidencia es igual a 'BAD'.

¿Alguien tiene alguna idea de como podria hacer esto?

Saludos y de antemano gracias por su ayuda, JJGarcia

PD: Gracias a Miguel, Gabriel y Hector por haberme apoyado en la primer
pregunta...! :)

Preguntas similare

Leer las respuestas

#1 JJGarcia
09/09/2006 - 18:50 | Informe spam
Hola Hector,
El patron o ID es el numero de producto, donde la idea es tener el
acumulado de 'total' de incidencias ocurridas al producto, solo si las
incidencias se dieron en forma consecutiva, es decir, que las fechas
hayan sido continuas y asi mismo que la incidencia sea la misma, es
decir, sera una especie de 'agrupar por', solo si la incidencia es >= 4
y si esta es continua para eso tomara las fechas, es decir, en la
semana puede haber prods que tengas las 4 incidencias pero si no son
continuas se descartan puesto que no aplican.

La primer vez lo resolvi con una tabla dinamica filtrando los
registros, saludos, JJGarcia

Héctor Miguel wrote:
hola [de nuevo], Jose !

la propuesta de formula sufrio una 'ligera crecidita' para verificar ambas coincidencias [producto e incidencia] :-(
una vez ordenado el listado por producto y fecha [mismos supuestos/convencionalismos] modifica la formula a la siguiente:

=max(mmult(contar.si(desref(b4,{-3\-2\-1\0}+{0;1;2;3},),"bad")*contar.si(desref(a4,{-3\-2\-1\0}+{0;1;2;3},),a4),{1\1\1\1}))=4

saludos,
hector.
Respuesta Responder a este mensaje
#2 Héctor Miguel
09/09/2006 - 19:18 | Informe spam
hola, Jose !

El patron o ID es el numero de producto, donde la idea es tener el acumulado de 'total' de incidencias
ocurridas al producto, solo si las incidencias se dieron en forma consecutiva, es decir
que las fechas hayan sido continuas y asi mismo que la incidencia sea la misma
es decir, sera una especie de 'agrupar por', solo si la incidencia es >= 4 y si esta es continua
para eso tomara las fechas, es decir, en la semana puede haber prods que tengas las 4 incidencias
pero si no son continuas se descartan puesto que no aplican.
La primer vez lo resolvi con una tabla dinamica filtrando los registros [...]



es probable que necesites aportar mas 'detalles' con relacion a la forma y lugar para... 'agrupar por' -?-
mientras [y solo por preguntar]... ya hiciste pruebas con el procedimiento y la formula propuestos ?

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#3 AnSanVal
09/09/2006 - 22:41 | Informe spam
Los señalados con "<" (y sólo esos) ¿se consideran consecutivos?.
(mismo ID, Incidencia = "Bad" y días consecutivos)

producto incidencia Fecha
3086 Bad 28/Jul/06
33086 Bad 28/Jul/06
33089 Bad 28/Jul/06
33086 Good 29/Jul/06
33086 Good 29/Jul/06
3086 Good 29/Jul/06
33086 Bad 31/Jul/06 <
33083 Bad 31/Jul/06
73086 Bad 31/Jul/06
33086 Bad 01/Ago/06 <
23087 Bad 01/Ago/06
33086 Bad 01/Ago/06 <
53086 Bad 01/Ago/06
33062 Bad 02/Ago/06
33021 Bad 02/Ago/06
33086 Bad 02/Ago/06 <

Si es asi prueba este código, siempre que:
1.- Datos en A:C.
2.- En columna ID (a partir de ID1) están los IDs no repetidos.
3.- Esten libres las columnas J:L.

Sub consecutivos()
Dim ID As Double
Dim filaID As Integer
Dim filaDatos As Double
Dim filaDestino As Integer
Dim contador As Integer
Dim borra As Integer
filaDestino = 1
For filaID = 1 To Range("ID1").End(xlDown).Row
If contador < 4 Then
Range(Cells(filaDestino - contador, 10), _
Cells(filaDestino, 12)).ClearContents
filaDestino = filaDestino - contador
End If
contador = 0
For filaDatos = 2 To Cells(1, 1).End(xlDown).Row
If Cells(filaDatos, 1) = Cells(filaID, 238) And _
Cells(filaDatos, 2) = "Bad" Then
If filaDestino = 1 Then
Cells(1, 10) = Cells(filaDatos, 1).Value
Cells(1, 11) = Cells(filaDatos, 2).Value
Cells(1, 12) = Cells(filaDatos, 3).Value
filaDestino = 2
contador = 1
GoTo 1
End If
If Cells(filaDatos, 3) < Cells(filaDestino - 1, 12) + 2 Then
Cells(filaDestino, 10) = Cells(filaDatos, 1).Value
Cells(filaDestino, 11) = Cells(filaDatos, 2).Value
Cells(filaDestino, 12) = Cells(filaDatos, 3).Value
filaDestino = filaDestino + 1
contador = contador + 1
Else
Range(Cells(filaDestino - contador, 10), _
Cells(filaDestino, 12)).ClearContents
filaDestino = filaDestino - contador
Cells(filaDestino, 10) = Cells(filaDatos, 1).Value
Cells(filaDestino, 11) = Cells(filaDatos, 2).Value
Cells(filaDestino, 12) = Cells(filaDatos, 3).Value
filaDestino = 2
contador = 1
End If
1
End If
Next filaDatos
Next filaID
If contador < 4 Then Range(Cells(filaDestino - contador, 10), _
Cells(filaDestino, 12)).ClearContents
End Sub
Respuesta Responder a este mensaje
#4 Héctor Miguel
10/09/2006 - 06:20 | Informe spam
hola, AnSanVal !

no se si algo he dejado fuera de las consideraciones ?
- filtros avanzados / unicos / copiar a la columna ID los productos
- datos en columnas A:C
- libres las columnas J:L
- copiado/pegado y ejecutado el codigo propuesto y... nada -?-

saludos,
hector.

Los señalados con "<" (y sólo esos) ¿se consideran consecutivos?.
(mismo ID, Incidencia = "Bad" y días consecutivos)
producto incidencia Fecha
3086 Bad 28/Jul/06
33086 Bad 28/Jul/06
33089 Bad 28/Jul/06
33086 Good 29/Jul/06
33086 Good 29/Jul/06
3086 Good 29/Jul/06
33086 Bad 31/Jul/06 <
33083 Bad 31/Jul/06
73086 Bad 31/Jul/06
33086 Bad 01/Ago/06 <
23087 Bad 01/Ago/06
33086 Bad 01/Ago/06 <
53086 Bad 01/Ago/06
33062 Bad 02/Ago/06
33021 Bad 02/Ago/06
33086 Bad 02/Ago/06 <
Si es asi prueba este código, siempre que:
1.- Datos en A:C.
2.- En columna ID (a partir de ID1) están los IDs no repetidos.
3.- Esten libres las columnas J:L.
Sub consecutivos()
Dim ID As Double
Dim filaID As Integer
Dim filaDatos As Double
Dim filaDestino As Integer
Dim contador As Integer
Dim borra As Integer
filaDestino = 1
For filaID = 1 To Range("ID1").End(xlDown).Row
If contador < 4 Then
Range(Cells(filaDestino - contador, 10), _
Cells(filaDestino, 12)).ClearContents
filaDestino = filaDestino - contador
End If
contador = 0
For filaDatos = 2 To Cells(1, 1).End(xlDown).Row
If Cells(filaDatos, 1) = Cells(filaID, 238) And _
Cells(filaDatos, 2) = "Bad" Then
If filaDestino = 1 Then
Cells(1, 10) = Cells(filaDatos, 1).Value
Cells(1, 11) = Cells(filaDatos, 2).Value
Cells(1, 12) = Cells(filaDatos, 3).Value
filaDestino = 2
contador = 1
GoTo 1
End If
If Cells(filaDatos, 3) < Cells(filaDestino - 1, 12) + 2 Then
Cells(filaDestino, 10) = Cells(filaDatos, 1).Value
Cells(filaDestino, 11) = Cells(filaDatos, 2).Value
Cells(filaDestino, 12) = Cells(filaDatos, 3).Value
filaDestino = filaDestino + 1
contador = contador + 1
Else
Range(Cells(filaDestino - contador, 10), _
Cells(filaDestino, 12)).ClearContents
filaDestino = filaDestino - contador
Cells(filaDestino, 10) = Cells(filaDatos, 1).Value
Cells(filaDestino, 11) = Cells(filaDatos, 2).Value
Cells(filaDestino, 12) = Cells(filaDatos, 3).Value
filaDestino = 2
contador = 1
End If
1
End If
Next filaDatos
Next filaID
If contador < 4 Then Range(Cells(filaDestino - contador, 10), _
Cells(filaDestino, 12)).ClearContents
End Sub
Respuesta Responder a este mensaje
#5 AnSanVal
10/09/2006 - 14:56 | Informe spam
Hola Hector. No, mis preguntas no te las dirigia a ti :-) (faltaría más),
se las dirigía a JJGarcia, porque no tengo claro lo que él considera
consecutivos. Cuando puse mi respuesta no habia visto la tuya, eso me ocurre
cuando contesto sin actualizar en el O. Expres.

Saludos desde Tenerife.
*********************************
"Héctor Miguel" escribió en el mensaje
news:
hola, AnSanVal !

no se si algo he dejado fuera de las consideraciones ?
- filtros avanzados / unicos / copiar a la columna ID los productos
- datos en columnas A:C
- libres las columnas J:L
- copiado/pegado y ejecutado el codigo propuesto y... nada -?-

saludos,
hector.

Los señalados con "<" (y sólo esos) ¿se consideran consecutivos?.
(mismo ID, Incidencia = "Bad" y días consecutivos)
producto incidencia Fecha
3086 Bad 28/Jul/06
33086 Bad 28/Jul/06
33089 Bad 28/Jul/06
33086 Good 29/Jul/06
33086 Good 29/Jul/06
3086 Good 29/Jul/06
33086 Bad 31/Jul/06 <
33083 Bad 31/Jul/06
73086 Bad 31/Jul/06
33086 Bad 01/Ago/06 <
23087 Bad 01/Ago/06
33086 Bad 01/Ago/06 <
53086 Bad 01/Ago/06
33062 Bad 02/Ago/06
33021 Bad 02/Ago/06
33086 Bad 02/Ago/06 <
Si es asi prueba este código, siempre que:
1.- Datos en A:C.
2.- En columna ID (a partir de ID1) están los IDs no repetidos.
3.- Esten libres las columnas J:L.
Sub consecutivos()
Dim ID As Double
Dim filaID As Integer
Dim filaDatos As Double
Dim filaDestino As Integer
Dim contador As Integer
Dim borra As Integer
filaDestino = 1
For filaID = 1 To Range("ID1").End(xlDown).Row
If contador < 4 Then
Range(Cells(filaDestino - contador, 10), _
Cells(filaDestino, 12)).ClearContents
filaDestino = filaDestino - contador
End If
contador = 0
For filaDatos = 2 To Cells(1, 1).End(xlDown).Row
If Cells(filaDatos, 1) = Cells(filaID, 238) And _
Cells(filaDatos, 2) = "Bad" Then
If filaDestino = 1 Then
Cells(1, 10) = Cells(filaDatos, 1).Value
Cells(1, 11) = Cells(filaDatos, 2).Value
Cells(1, 12) = Cells(filaDatos, 3).Value
filaDestino = 2
contador = 1
GoTo 1
End If
If Cells(filaDatos, 3) < Cells(filaDestino - 1, 12) + 2 Then
Cells(filaDestino, 10) = Cells(filaDatos, 1).Value
Cells(filaDestino, 11) = Cells(filaDatos, 2).Value
Cells(filaDestino, 12) = Cells(filaDatos, 3).Value
filaDestino = filaDestino + 1
contador = contador + 1
Else
Range(Cells(filaDestino - contador, 10), _
Cells(filaDestino, 12)).ClearContents
filaDestino = filaDestino - contador
Cells(filaDestino, 10) = Cells(filaDatos, 1).Value
Cells(filaDestino, 11) = Cells(filaDatos, 2).Value
Cells(filaDestino, 12) = Cells(filaDatos, 3).Value
filaDestino = 2
contador = 1
End If
1
End If
Next filaDatos
Next filaID
If contador < 4 Then Range(Cells(filaDestino - contador, 10), _
Cells(filaDestino, 12)).ClearContents
End Sub




Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida