Solução 1

Solução 1

Tenho uma linha de valores e quero encontrar a média dos 3 primeiros, sem contar as células em branco. Exemplo:

  ABCDEFG
 12 em branco 8 em branco 7 9 4

A média das 3 primeiras células não vazias deve ser 9, mas não consigo encontrar uma fórmula que calcule isso para mim. Alguém pode ajudar?

Responder1

EmA2digitar:

=IF(A1="",0,1)

e emB2digitar:

=IF(OR(B1="",SUM($A$2:A2)=3),0,1)

e copie. Então em outra célula digite:

=SUMPRODUCT((1:1)*(2:2))/3

insira a descrição da imagem aqui

Responder2

Você está procurando oMÉDIAfunção. De acordo com a fórmulasintaxe e usopara a função MÉDIA do Excel:

Se um argumento de referência de intervalo ou célula contiver texto, valores lógicos,ou células vazias, esses valores são ignorados; no entanto, as células com valor zero são incluídas.

A fórmula =AVERAGE(A1:E1)retorna 9:

insira a descrição da imagem aqui

Responder3

Solução 1

Força bruta: A média que você deseja pode ser calculada por:

=SE(CONTAR($A1:$C1)=3, MÉDIA($A1:$C1),
 SE(CONTAR($A1:$D1)=3, MÉDIA($A1:$D1),
 SE(CONTAR($A1:$E1)=3, MÉDIA($A1:$E1),
 SE(CONTAR($A1:$F1)=3, MÉDIA($A1:$F1),
 SE(CONTAR($A1:$G1)=3, MÉDIA($A1:$G1), "ops")))))

(Versão de linha única:)
 =IF(COUNT($A1:$C1)=3, AVERAGE($A1:$C1), IF(COUNT($A1:$D1)=3, AVERAGE($A1:$D1 ), SE(CONTAR($A1:$E1)=3, MÉDIA($A1:$E1), SE(CONTAR($A1:$F1)=3, MÉDIA($A1:$F1), SE(CONTAR( $A1:$G1)=3, MÉDIA($A1:$G1),"ops")))))

que procura o subconjunto inicial mais curto da linha que contém três números e calcula a média disso. Isso se torna não apenas estranho para um grande número de colunas, mas pode falhar rapidamente, pois (acredito) IF()tem um limite de aninhamento bastante baixo.

Solução 1.9

Delicadeza.

Eu chamo isso de “1,9” porque ainda não está pronto. A expressão

SMALL(IF(ISNUMBER($A1:$G1),COLUMN($A1:$G1),""), {1,2,3})

(usado em uma fórmula de matriz) encontra os números das colunas dos três primeiros números na linha 1. O

IF(ISNUMBER($A1:$G1),COLUMN($A1:$G1),"")

parte avalia como

IF( {TRUE,FALSE,TRUE,FALSE,TRUE,TRUE,TRUE}, {1,2,3,4,5,6,7}, "" )

que reduz para

{ 1, "", 3, "", 5, 6, 7 }

e SMALL(…, {1,2,3})dos acima produz { 1, 3, 5 }. Deveria ser uma simples questão de dizer

=AVERAGE(INDEX($A7:$G7, 1, SMALL(IF(ISNUMBER($A7:$G7),COLUMN($A7:$G7),""),{1,2,3})))

ou

=AVERAGE(OFFSET($A7:$G7, 1, SMALL(IF(ISNUMBER($A7:$G7),COLUMN($A7:$G7),""),{1,2,3})))

mas eles retornam o valor de A1(12) ou um erro ( #DIV/0!ou #REF!). Não consigo descobrir como terminar isso.

informação relacionada