Mostrar apenas o resultado de uma fórmula se ela atender a determinados critérios

Mostrar apenas o resultado de uma fórmula se ela atender a determinados critérios

Gosto de manter minhas planilhas do Excel bastante limpas. Então, muitas vezes acabo escrevendo declarações como esta:

IF([formula x]=[value],"",[formula x])

O que isso diz essencialmente é que se a fórmula corresponder a um determinado critério, não exiba o resultado - caso contrário, exiba o resultado.

Em alguns casos, [formula x]é repetido em uma coluna inteira de células e cada célula tem uma referência que [formula x]aponta para a célula acima dela. Para evitar erros de fórmula, tenho que adicionar outra camada assim:

IF(C2="","",IF([formula x]=[value],"",[formula x])

No entanto, especialmente quando [formula x]é muito longo, isso pode resultar em uma fórmula final que parece muito mais complicada do que é e se torna muito mais difícil de solucionar problemas e manter do que deveria ser.

Aqui está um exemplo horrível...

Fórmula básica:

=IF(A3>=$E$11,C2+(C2*($F$2/12))-$E$9,C2+(C2*($F$2/12))-$E$7)

Adicione supressão condicional:

=IF(C2="","",IF(IF(A3>=$E$11,C2+(C2*($F$2/12)-$E$9),C2+(C2*($F$2/12))-$E$7)<=0,"",IF(A3>=$E$11,C2+(C2*($F$2/12))-$E$9,C2+(C2*($F$2/12))-$E$7)))

Uma fórmula já muito longa tem mais que o dobro de tamanho, apenas para que eu possa exibir um espaço em branco (ou qualquer outro valor escolhido, nesse caso) quando essa mesma fórmula atender a uma determinada condição. Se eu tentar fazer isso em uma linha inteira, dependendo da fórmula inicial, posso facilmente encontrar erros de referência circular.

Existe alguma maneira de auto-referenciar uma fórmula ou argumento existente na mesma célula, ou talvez outra função ou recurso que possa ser usado para obter esse resultado de forma mais limpa?

Uma função que faz o que estou procurando pode ser assim:

=FnName([base formula],[match condition],[condition result])

O argumento 1 é a fórmula base, o argumento 2 é a condição que estou interessado em corresponder. O argumento 3 é o resultado a ser exibido se a condição corresponder. Caso a condição não seja atendida, a função retorna o resultado da fórmula base.

Responder1

Você já pensou em avaliar a fórmula em uma célula oculta (ou em uma célula de outra planilha) e depois fazer seu apagamento condicional com base no valor da célula oculta em vez de ter que inserir a fórmula duas vezes. Não conheço todo o contexto em que você está trabalhando, mas já fiz algo semelhante com algum sucesso no passado.

Responder2

Você poderia recorrer a uma função VBA para limpar a sintaxe da fórmula. Por exemplo, você pode colocar algo assim em um módulo (pressione Alt+ F11e depois Inserir >> Módulo):

Option Explicit
Public Function BLANKIF(checkcell As String, notb As Variant, Optional checkcond As String) As Variant
If checkcell = checkcond Then
    BLANKIF = ""
Else
    BLANKIF = notb
End If
End Function

Então, para usar isso para aplicar supressão condicional a

=IF(A3>=$E$11,C2+(C2*($F$2/12))-$E$9,C2+(C2*($F$2/12))-$E$7)

Você usaria

=BLANKIF(C2,IF(A3>=$E$11,C2+(C2*($F$2/12))-$E$9,C2+(C2*($F$2/12))-$E$7))

Se você quisesse deixar a célula em branco if C2= "omg", você adicionaria um terceiro argumento opcional:

=BLANKIF(C2,IF(A3>=$E$11,C2+(C2*($F$2/12))-$E$9,C2+(C2*($F$2/12))-$E$7),"omg")

Responder3

Você pode usar Conditional Formattingpara atingir seu objetivo.

Remova todo o material extra da fórmula, deixando apenas a fórmula base

Aplique uma Format only cells that containcondição com seus critérios de ocultação

Quando a condição Blanking for verdadeira, aplique um formato de número personalizado de;;;

Alternativa para Excel 2007 ou posterior

IFERROR(value, value_if_error)

Da ajuda do Excel:

Retorna um valor que você especifica se uma fórmula for avaliada como um erro; caso contrário, retorna o resultado da fórmula. Use a função IFERROR para interceptar e tratar erros em uma fórmula.

informação relacionada