Preciso retornar uma célula vazia de uma fórmula do Excel, mas parece que o Excel trata uma seqüência de caracteres vazia ou uma referência a uma célula vazia de maneira diferente de uma célula vazia verdadeira. Então, basicamente, eu preciso de algo como
=IF(some_condition,EMPTY(),some_value)
Eu tentei fazer coisas como
=IF(some_condition,"",some_value)
e
=IF(some_condition,,some_value)
e assumindo que B1 é uma célula vazia
=IF(some_condition,B1,some_value)
mas nenhuma dessas parece ser verdadeira célula vazia, suponho, porque é o resultado de uma fórmula. Existe alguma maneira de preencher uma célula se, e somente se, alguma condição for atendida e manter a célula realmente vazia?
EDIT: como recomendado, tentei retornar NA (), mas para meus propósitos isso também não funcionou. Existe uma maneira de fazer isso com o VB?
Edição: Estou criando uma planilha que extrai dados de outras planilhas formatadas para as demandas muito específicas de um aplicativo que importa os dados para um banco de dados. Eu não tenho acesso para alterar a implementação deste aplicativo e ele falhará se o valor for "" em vez de realmente vazio.
fonte
Respostas:
Você terá que usar
VBA
, então. Você iterará nas células do seu intervalo, testará a condição e excluirá o conteúdo, se elas corresponderem.Algo como:
fonte
VbNullString
O Excel não tem nenhuma maneira de fazer isso.
O resultado de uma fórmula em uma célula no Excel deve ser um número, texto, lógico (booleano) ou erro. Não existe um tipo de valor de célula de fórmula "vazio" ou "em branco".
Uma prática que vi seguida é usar NA () e ISNA (), mas isso pode ou não resolver seu problema, pois há uma grande diferença na maneira como NA () é tratado por outras funções (SUM (NA ( )) é # N / A enquanto SUM (A1) é 0 se A1 estiver vazio).
fonte
Sim, é possível.
É possível ter uma fórmula aniquiladora avaliando o trueblank se a condição for atendida. Passa no teste de
ISBLANK
fórmula.Tudo o que você precisa é configurar um intervalo nomeado, por exemplo
GetTrueBlank
, e você poderá usar o seguinte padrão, como na sua pergunta:Etapa 1. Coloque este código no módulo do VBA.
Passo 2. No
Sheet1
noA1
celular adicionar intervalo nomeadoGetTrueBlank
com a seguinte fórmula:É isso aí. Não há mais etapas. Basta usar a fórmula auto-aniquiladora. Coloque na célula, digamos
B2
, a seguinte fórmula:A fórmula acima em
B2
será avaliada como trueblank, se você digitar 0A2
.Você pode baixar um arquivo de demonstração aqui .
No exemplo acima, a avaliação da fórmula para o trueblank resulta em uma célula vazia. Verificando resultado com
ISBLANK
resultados de fórmula positivamente em TRUE. Esta é a fórmula do hara-kiri. A fórmula desaparece da célula quando a condição é atendida. A meta é alcançada, embora você provavelmente deseje que a fórmula não desapareça.Você pode modificar a fórmula para retornar o resultado na célula adjacente, para que a fórmula não se mate. Veja como obter resultado UDF na célula adjacente .
Encontrei exemplos de como obter um trueblank como resultado da fórmula revelado pelo The FrankensTeam aqui: https://sites.google.com/site/e90e50/excel-formula-to-change-the-value-of-another- célula
fonte
Talvez isso seja trapaça, mas funciona!
Eu também precisava de uma tabela que é a fonte de um gráfico e não queria que nenhuma célula em branco ou zero produzisse um ponto no gráfico. É verdade que você precisa definir a propriedade do gráfico, selecionar dados, células ocultas e vazias para "mostrar células vazias como lacunas" (clique no botão de opção). Esse é o primeiro passo.
Em seguida, nas células que podem resultar em um resultado que você não deseja plotar, coloque a fórmula em uma instrução SE com
NA()
resultados como=IF($A8>TODAY(),NA(), *formula to be plotted*)
Isso fornece o gráfico necessário sem pontos quando ocorre um valor de célula inválido. É claro que isso deixa todas as células com esse valor inválido para ler
#N/A
, e isso é confuso.Para limpar isso, selecione a célula que pode conter o valor inválido e selecione formatação condicional - nova regra. Selecione 'formatar apenas células que contêm' e, na descrição da regra, selecione 'erros' na caixa suspensa. Em formato, selecione fonte - cor - branco (ou qualquer que seja a cor de fundo). Clique nos vários botões para sair e você verá que as células com dados inválidos ficam em branco (na verdade, elas contêm
#N/A
texto branco sobre fundo branco, em branco). Em seguida, o gráfico vinculado também não exibe os pontos de valor inválidos.fonte
Foi assim que fiz no conjunto de dados que estava usando. Parece complicado e estúpido, mas foi a única alternativa para aprender a usar a solução VB mencionada acima.
q
pois não estava em nenhum lugar da minha planilha de dados.q
por nada.Esse processo de três etapas transformou todas as células "vazias" em células "em branco". Tentei mesclar as etapas 2 e 3 simplesmente substituindo a célula em branco por uma célula em branco, mas isso não funcionou - tive que substituir o célula em branco por algum tipo de texto real e substitua esse texto por uma célula em branco.
fonte
Se o objetivo é exibir uma célula como vazia quando na verdade tem o valor zero, em vez de usar uma fórmula que resulta em uma célula em branco ou vazia (como não há
empty()
função),onde você deseja uma célula em branco, retorne um em
0
vez de""
e THENdefina o formato numérico para as células, assim, onde você terá que criar o que deseja para números positivos e negativos (os dois primeiros itens separados por ponto e vírgula). No meu caso, os números que eu tinha eram 0, 1, 2 ... e eu queria que 0 aparecesse vazio. (Eu nunca descobri para que o parâmetro de texto era usado, mas parecia necessário).
fonte
Tente avaliar a célula usando
LEN
. Se ele contiver uma fórmulaLEN
retornará0
. Se ele contiver texto, ele retornará maior que0
.fonte
""
ou está vazio.LEN(cell)>0
retorna true se houver um número (incluindo zero e incluindo se o número é calculado por uma fórmula) e false se string vazia ou vazia.Uau, um número incrível de pessoas interpretou mal a pergunta. É fácil fazer uma célula parecer vazia. O problema é que, se você precisar que a célula esteja vazia, as fórmulas do Excel não poderão retornar "nenhum valor", mas poderão retornar apenas um valor. Retornar um zero, um espaço ou até "" é um valor.
Portanto, você deve retornar um "valor mágico" e substituí-lo por nenhum valor usando pesquisar e substituir ou usando um script VBA. Embora você possa usar um espaço ou "", meu conselho seria usar um valor óbvio, como "NODATE" ou "NUMUMBER" ou "XXXXX", para que você possa ver facilmente onde isso ocorre - é muito difícil encontrar "" em uma planilha.
fonte
Use em
COUNTBLANK(B1)>0
vez deISBLANK(B1)
dentro de suaIF
declaração.Ao contrário
ISBLANK()
,COUNTBLANK()
considera""
como vazio e retorna 1.fonte
Tantas respostas que retornam um valor que PARECE vazio, mas na verdade não está vazio como célula, conforme solicitado ...
Conforme solicitado, se você realmente deseja uma fórmula que retorne uma célula vazia. É possível através do VBA. Então, aqui está o código para fazer exatamente isso. Comece escrevendo uma fórmula para retornar o erro # N / A onde quiser que as células estejam vazias. Em seguida, minha solução limpa automaticamente todas as células que contêm esse erro # N / D. Obviamente, você pode modificar o código para excluir automaticamente o conteúdo das células com base no que quiser.
Abra o "visualizador visual básico" (Alt + F11) Encontre a pasta de trabalho de interesse no explorador de projetos e clique duas vezes nela (ou clique com o botão direito do mouse e selecione o código de exibição). Isso abrirá a janela "ver código". Selecione "Pasta de trabalho" no menu suspenso (Geral) e "SheetCalculate" no menu suspenso (Declarações).
Cole o seguinte código (com base na resposta de JT Grimes) dentro da função Workbook_SheetCalculate
Salve seu arquivo como uma pasta de trabalho habilitada para macro
NB: Este processo é como um bisturi. Ele removerá todo o conteúdo de todas as células avaliadas para o erro # N / A, portanto, esteja ciente. Eles irão e você não poderá recuperá-los sem reinserir a fórmula que costumavam conter.
NB2: Obviamente, você precisa habilitar as macros quando abrir o arquivo, caso contrário ele não funcionará e os erros # N / D permanecerão sem exclusão.
fonte
Essa resposta não lida totalmente com o OP, mas houve várias vezes que tive um problema semelhante e procurei a resposta.
Se você pode recriar a fórmula ou os dados, se necessário (e, a partir de sua descrição, parece que pode), quando estiver pronto para executar a parte que requer que as células em branco estejam realmente vazias , poderá selecionar a região e execute a seguinte macro vba.
isso eliminará o conteúdo de qualquer célula que esteja sendo exibida no momento
""
ou tenha apenas uma fórmulafonte
O que eu usei foi um pequeno truque. Eu usei T (1), que retornou uma célula vazia. T é uma função no excel que retorna seu argumento, se for uma string e uma célula vazia. Então, o que você pode fazer é:
fonte
Usei o seguinte trabalho para tornar meu excel mais limpo:
Quando você faz os cálculos, o erro "" fornecerá um erro, portanto você deseja tratá-lo como um número, então usei uma instrução if aninhada para retornar 0 em vez de "" e, se o resultado for 0, esta equação retornará ""
Dessa forma, a planilha do Excel ficará limpa ...
fonte
Se você estiver usando funções de pesquisa como HLOOKUP e VLOOKUP para trazer os dados para sua planilha, coloque a função entre colchetes e a função retornará uma célula vazia em vez de um {0}. Por exemplo,
Isso retornará um valor zero se a célula de pesquisa estiver vazia:
Isso retornará uma célula vazia se a célula de pesquisa estiver vazia:
Não sei se isso funciona com outras funções ... ainda não tentei. Estou usando o Excel 2007 para conseguir isso.
Editar
Para realmente obter um IF (A1 = "",,) para retornar como verdadeiro, é preciso haver duas pesquisas na mesma célula separadas por um &. A maneira mais fácil de contornar isso é fazer a segunda pesquisa em uma célula que esteja no final da linha e sempre estará vazia.
fonte
Bem, até agora, este é o melhor que eu poderia inventar.
Ele usa a
ISBLANK
função para verificar se a célula está realmente vazia em umaIF
instrução. Se houver algo na célula,A1
neste exemplo, mesmo um caractere ESPAÇO,a célula não existe
EMPTY
e o cálculo resultará. Isso impedirá que os erros de cálculo sejam exibidos até que você tenha números para trabalhar.Se a célula estiver
EMPTY
, a célula de cálculo não exibirá os erros do cálculo. Se a célula estiverNOT EMPTY
, os resultados do cálculo serão exibidos. Isso gerará um erro se seus dados forem ruins, os temidos#DIV/0
!Altere as referências e a fórmula da célula conforme necessário.
fonte
A resposta é positiva - você não pode usar a função = IF () e deixar a célula vazia. "Parece vazio" não é o mesmo que vazio. É uma pena que duas aspas consecutivas não produzam uma célula vazia sem apagar a fórmula.
fonte
O Google me trouxe aqui com um problema muito semelhante, finalmente descobri uma solução que se adapta às minhas necessidades, isso pode ajudar outra pessoa também ...
Eu usei esta fórmula:
fonte