Fórmula do Excel: enésimo menor valor com critérios -

Índice

Fórmula genérica

(=SMALL(IF(criteria,values),n))

Resumo

Para obter o segundo menor valor, o terceiro menor valor, o quarto menor valor e assim por diante, onde cada valor corresponde aos critérios fornecidos, você pode usar uma fórmula de matriz que usa as funções SMALL e IF.

No exemplo mostrado, a fórmula em G7 é:

(=SMALL(IF(Sex="F",Time),F7))

Onde "Sexo" é um intervalo nomeado para C3: C15 e "Tempo" é o intervalo nomeado D3: D15.

Observação: esta é uma fórmula de matriz e deve ser inserida usando Control + Shift + Enter.

Explicação

A função SMALL é totalmente automática - você só precisa fornecer um intervalo e um número inteiro para "enésimo" para especificar o valor classificado que deseja.

O problema, nesse caso, é que não queremos que SMALL opere em todos os valores da faixa, apenas em valores masculinos ou femininos (M ou F). Para aplicar esses critérios, usamos a função IF, que fornece um teste lógico para "M" ou 'F ". Como estamos aplicando o teste a uma matriz de valores, o resultado também será uma matriz. No exemplo mostrado , a matriz resultante terá a seguinte aparência:

(0,0072916666666666667; FALSO; 0,00689814814814815; FALSO; 0,00835648148148148; FALSO; FALSO; FALSO; FALSO; 0,00693287037037037; FALSO; FALSO; 0,00672453703703704)

Onde FALSE representa tempos masculinos e os números representam tempos femininos. (Momentos como este são valores fracionários, por isso temos tantas casas decimais em alguns momentos).

A função SMALL irá ignorar automaticamente os valores TRUE e FALSE, então o resultado será o enésimo menor valor do conjunto de números reais no array.

Erro sem enésimo

Você obterá um erro se não houver o menor valor enésimo com base nos critérios fornecidos. Você pode interceptar esse erro com IFERROR e substituir por qualquer valor que faça sentido, como este:

(=IFERROR(SMALL(IF(Sex="F",Time),F8),"-"))

Critérios múltiplos

Para lidar com vários critérios, você pode estender a fórmula com lógica booleana de uma forma como esta:

=SMALL(IF((criteria1)*(criteria2),values),n)

Onde critérios1 e critérios2 e representam uma expressão para testar valores em um intervalo de critérios, conforme mostrado no exemplo original acima.

Artigos interessantes...