Tengo la siguiente tabla en Excel:
| ID | Descripción | Año | Enero | Febrero | Marzo | Abril | Mayo | Junio | Julio | Agosto | Septiembre | Octubre | Noviembre | Diciembre |
En cada mes pueden existir valores entre el 0 y el 10.000. Lo que necesito saber es cuál es el primer y el último mes con valores distintos a cero.
Es decir, si tengo por ejemplo: Año 2015, y en los meses desde enero a marzo “0” luego desde abril a octubre valores distintos a 0 y finalmente de noviembre a diciembre 0 nuevamente, necesito que me muestre en otras 2 columnas:
Inicio = Abril | Fin = Octubre.
¿Es posible?
Edición: Para encontrar el primer distinto de 0 funciona esto:
=COINCIDIR(VERDADERO;D2:02>0;0))
Pero para el último todavía no se cómo hacer.
Suponiendo que tu tabla es así:
ID | Descripción | Año | Enero | Febrero | Marzo | Abril | Mayo | Junio | Julio | Agosto | Septiembre | Octubre | Noviembre | Diciembre | Inicio | Fin
1 | Hola | 2015 | 0 | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 0 | |
2 | Ciao | 2016 | 0 | 0 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | 0 | 0 | |
Para obtener el primer mes podrías hacer algo como esto para Inicio:
=INDEX($D$1:$O$1,MATCH(TRUE,INDEX(D2:O2<>0,),0))
Y para el último mes algo como esto para Fin:
=INDEX($D$1:$O$1,MATCH(TRUE,INDEX(D2:O2<>0,),1))
(misma fórmula, sólo cambiando el tipo de coincidencia de 0 a 1). Aquí dejo una captura de pantalla de cómo se ve en mi Excel:

Lo siento, uso Excel en inglés, parece que los equivalentes en español serían INDICE
para INDEX
y COINCIDIR
para MATCH
, con lo que quedaría así:
=INDICE($D$1:$O$1,COINCIDIR(TRUE,INDICE(D2:O2<>0,),0))
=INDICE($D$1:$O$1,COINCIDIR(TRUE,INDICE(D2:O2<>0,),1))
La solución es una variante de la solución dada a esta respuesta en SuperUser.
Puedes utilizar la misma funcion ={COINCIDIR(VERDADERO;D2:02>0;0)}
, solo debes cambiar el último cero por uno, para que te devuelva el último, {COINCIDIR(VERDADERO;D2:02>0;1)}
Fórmulas de matriz
NOTA: Luego de escribir la fórmula, oprimir CTRL + Mayúsculas + Intro
Inicio: =INDEX(C1:N1,,MIN(IF(C2:N2>0,COLUMN(C2:N2)-2,13)))
NOTA: Se ha indicado 13
como valor para FALSO asumiendo que siempre habrá un mes con un valor mayor que 0
.
Fin: =INDEX(C1:N1,,MAX(IF(C2:N2>0,COLUMN(C2:N2)-2,0)))
NOTA: Se ha indicado 0
como valor para FALSO asumiendo que siempre habrá un mes con un valor mayor que 0
.
Referencia