Como contar apenas negativo, da direita para a esquerda, somente em seqüência, pare a contagem se o valor positivo aparecer

1

Em uma planilha do Excel, tenho seis células ( A1 - F1 ) contendo números. Quero contar valores negativos consecutivos (contíguos), da direita para a esquerda. por exemplo,

A1=2,  B1=6,  C1=-3, D1=-5, E1=-6, F1=-9  : Answer G1=4  (four continuous negative values)
A1=2,  B1=6,  C1=3,  D1=5,  E1=-6, F1=-9  : Answer G1=2
A1=2,  B1=-6, C1=3,  D1=5,  E1=-6, F1=-9  : Answer G1=2
A1=-2, B1=-6, C1=-3, D1=5,  E1=6,  F1=-9  : Answer G1=1
A1=-2, B1=-6, C1=-3, D1=3,  E1=-6, F1=-9  : Answer G1=2

Ou uma situação semelhante, mas com palavras, Quero contar quantas células consecutivas contêm RED , começando pela direita:

A1=GREEN, B1=GREEN, C1=GREEN, D1=GREEN, E1=RED,   F1=RED  : Answer G1=2
A1=GREEN, B1=GREEN, C1=RED,   D1=GREEN, E1=RED,   F1=RED  : Answer G1=2
A1=GREEN, B1=RED,   C1=RED,   D1=GREEN, E1=GREEN, F1=RED  : Answer G1=1
A1=GREEN, B1=RED,   C1=RED,   D1=RED,   E1=RED,   F1=RED  : Answer G1=5

Quero contar da direita para a esquerda até que a série específica seja quebrada.

    
por Nouman Zafar 28.10.2017 / 05:03

2 respostas

1

Digite

=6-MAX(IF(A1:F1>=0, COLUMN(A1:F1), 0))

em G1 e pressione Ctrl + Deslocar + Enter . Dado o seu primeiro exemplo (A1 = 2, B1 = 6, C1 = −3, D1 = −5, E1 = −6, F1 = −9), a subexpressão IF(X>=0, COLUMN(X), 0) cria uma matriz virtual que se parece com (1, 2, 0, 0, 0, 0) - substituindo números não negativos pelos números das colunas, e substituindo números negativos por zero. Tomando o MAX do que nos dá a última coluna (mais à direita) que contém um número não negativo - então tudo além disso deve ser negativo. Então, subtraindo isso de 6 nos diz quantos números negativos (consecutivos) existem na extremidade direita da série.

A tecla Ctrl + Deslocamento + Enter faz com que seja uma fórmula de matriz. Isso é necessário para criar um array virtual como esse.

Para a versão alternativa da pergunta, a solução é quase exatamente a mesma:

=6-MAX(IF(A1:F1<>"RED", COLUMN(A1:F1), 0))

    
por 28.10.2017 / 07:27
0

Para uma fórmula que pode ser inserida como fórmula normal, tente:

=IFERROR(LOOKUP(2,1/(A1:F1>=0),{5,4,3,2,1,0}),6)

O LOOKUP corresponde à última entrada que testa TRUE Em seguida, retornamos a contagem apropriada da matriz.

No entanto, se todos os valores forem <0 , o LOOKUP retornará um erro, portanto, precisamos ter seis.

    
por 28.10.2017 / 16:34