Mostra apenas um resultado de fórmula se atender a determinados critérios

6

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

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

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

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

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)

Adicionar preenchimento 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 é mais do que duplicada em tamanho, apenas para que eu possa exibir um espaço em branco (ou qualquer outro valor escolhido) 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 circulares.

Existe alguma maneira de fazer referência a uma fórmula ou argumento existente dentro da mesma célula, ou talvez outra função ou recurso que possa ser usado para obter esse resultado de maneira mais clara?

Uma função que faz o que eu 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 em 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 correspondida, a função retorna o resultado da fórmula base.

    
por Iszi 09.05.2012 / 22:48

3 respostas

3

Você já pensou em avaliar a fórmula em uma célula oculta (ou em uma célula em outra planilha) e, em seguida, fazer sua supressão condicional com base no valor na 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 fiz algo semelhante com algum sucesso no passado.

    
por 10.05.2012 / 06:28
2

Você pode recorrer a uma função do VBA para limpar a sintaxe da fórmula. Por exemplo, você pode colocar algo assim em um módulo (Pressione Alt + F11 e, em seguida, 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

Portanto, para usar isso para aplicar a 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 colocar a célula em branco se 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")
    
por 10.05.2012 / 15:50
1

Você pode usar Conditional Formatting para alcançar seu objetivo.

Remova todo o material extra da fórmula, deixando apenas a fórmula básica

Aplique uma condição Format only cells that contain com seus critérios de precisão

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

Alternativa para o Excel 2007 ou posterior

IFERROR(value, value_if_error)

Da ajuda do Excel:

Returns a value you specify if a formula evaluates to an error; otherwise, returns the result of the formula. Use the IFERROR function to trap and handle errors in a formula.

    
por 12.05.2012 / 01:22