Eu tenho uma fórmula longa com a seguinte estrutura:
=IF(!X!<>0,!X!+A1,"")
onde ! X! é uma fórmula muito longa.
Existe alguma solução para evitar repetir o! X! duas vezes? Preciso disso por dois motivos:
- Para tornar a fórmula legível para o usuário da planilha
- Para reduzir o tempo do processo
Agradeço qualquer ajuda.
Obrigado, Dio
To reduce the process time
, obviamente, precisará armazenar o resultado em algum lugar; caso contrário, o Excel precisará recalcular o valor novamente quando a condição corresponder. Divisão também é uma operação muito custosaRespostas:
Outra abordagem é usar inversão dupla :
Se a forma realmente_longa for avaliada como 0 , você obterá uma divisão por zero e a
IFERROR()
capturará!Observe que a maneira usual (e melhor) de lidar com esse requisito é com uma célula auxiliar.
fonte
1/1/x
com 100.000 números aleatórios várias vezes no Excel e apenas 1,4% das vezes houve um erro de arredondamento. O erro relativo máximo que eu já encontrei foi 1.6e-16, que é, efetivamente, zero. Além disso, curiosamente, os números inteiros nunca exibiram erros de arredondamento (testaram vários intervalos de 0 a 1e14). Portanto, essa resposta pode ser desaprovada do ponto de vista da pureza / limpeza, mas não do ponto de vista prático do cálculo.A resposta óbvia é colocar a fórmula em uma célula de trabalho, longe da planilha principal. Por exemplo, se você usar
H1
, defina-o como:Sua fórmula se torna:
Isso é típico do que alguém faria em qualquer outra linguagem de programação.
fonte
1/(1/x)
nem sempre é exatamente a mesma quex
), especialmente se estiver lidando com dados inteiros. Também não é aplicável de maneira mais geral (por exemplo, verificação de menos de zero). (Comentário cruzado com @ LưuVĩnhPhúc está sob resposta aceita.)Você realmente precisa que o resultado esteja
""
no caso falso? Se você só precisa do celular para olhar em branco (por exemplo, você não vai usar algo como=ISNUMBER()
sobre isso mais tarde), você pode usar a formatação condicional para ocultar o conteúdo do falso caso.O formato condicional que você aplicará à célula para que ela não exiba nada é o formato personalizado
""
, como este (está em português, mas você entendeu):A fórmula na célula será, como esperado, simplesmente
=!X!+A1
.A fórmula de formatação condicional poderia ser
=!X!=0
, mas isso forçaria o recálculo de!X!
, o que você não deseja (seu "Ponto 2"). É melhor aproveitar a própria célula usando=B1=A1
(supondo que nossa célula seja B1 ) - isso implicaria!X! = 0
.Mesmo que você precise que o conteúdo da célula seja realmente
""
, geralmente pequenas alterações podem ser feitas na planilha para que essa abordagem possa ser usada. Se for esse o caso, deixe um comentário descrevendo a situação.fonte
Se você não pode adicionar uma coluna auxiliar , por que não adicionar uma planilha inteira? Existem várias vantagens para isso:
=IF(X<>0,X+A1,"")
D5
.helper!D5
na planilha principal.As desvantagens que posso ver são:
sheetname!D5
vez de apenas comoD5
.Pesando as vantagens e desvantagens, acho que, para muitos casos de uso, essa é uma boa solução. Existem situações em que não é ideal, embora eu não possa pensar em nenhuma no momento.
fonte
uma opção ainda não sugerida é criar uma função definida pelo usuário. Você precisaria ativar a guia Desenvolvedor na barra de menus (google it) e criar um módulo.
Na barra de fórmulas, você faria
NOTA: Agora, esse arquivo se torna um arquivo .xlsx (com macros) e pode precisar de permissões adicionais em uma rede corporativa, pois as macros podem ser usadas para fins maliciosos e alguns filtros de email os bloquearão. As funções não estão documentadas, portanto, você precisará fornecer notas sobre o que suas funções estão fazendo e acho útil chamar todas as minhas funções udf_xxxxx para que fique claro que ela não é uma função interna
Existem outros GOTCHAs com UDFs também. Consulte este link para obter algumas boas dicas http://www.decisionmodels.com/calcsecretsj.htm
fonte