Exibir em branco ao fazer referência à célula em branco no Excel 2010


27

Eu tenho uma pasta de trabalho do Excel 2010 que contém várias planilhas individuais. As células em uma das planilhas estão vinculadas a células individuais em duas outras planilhas na mesma pasta de trabalho. Estou usando uma referência direta de célula que essencialmente diz que qualquer valor inserido em uma célula específica em uma planilha também preenche células em duas outras planilhas. Eu usei a função (=) com a referência de célula para fazer isso.

O problema que eu estou enfrentando é que, mesmo quando a célula principal é deixada em branco, as células que são preenchidas a partir dessa célula primária exibem 0, em vez de permanecerem em branco.

Quero que as células subordinadas permaneçam em branco se a célula principal à qual estão vinculadas estiver em branco.


Minha fórmula é muito longa, para mim também a construção do IF não é aceitável, boa pergunta, mas eu também não encontrei uma resposta boa o suficiente. {= IFERROR (ÍNDICE (NEPŘÍMÝ.ODKAZ ("EsZkouska"); PEQUENO (KDYŽ ((ÍNDICE (NEPŘÍMÝ.ODKAZ ("EsZkouska")) ;; 1; 1) = "ČSN721180") * (ÍNDICE (NEPŘÍMÝ.ODKAZ (" EsZkouska ") ;; 9; 1) =" RC_P_B "); ŘÁDEK (NEPŘÍMÝ.ODKAZ (" EsZkouska ")) - MIN (ŘÁDEK (NEPŘÍMÝ.ODKAZ (" EsZkouska ")))) + 1;"); 1) ; 17; 1); "")}
Vojtěch Dohnal

É possível usar a construção IF combinada com esta abordagem: stackoverflow.com/questions/22359452/… . Assim você pode criar chamado fórmulas e usá-los em sua simples instrução IF ...
Vojtěch Dohnal

Respostas:


49

Você precisa forçar o Excel a tratar o conteúdo da célula como um valor de texto em vez de um número, o que é feito automaticamente com valores em branco.

=A2 & ""

Isso forçará o Excel a transformar essa célula em referência em um valor de texto, impedindo a conversão de espaços em branco em zeros.


4
Uau! Não acredito que acabou sendo tão simples!
Scott

1
Como a solução lida com a formatação da entrada de números? Parece-me que esta resposta destrói dados numéricos. Claro - você não obtém o 0 quando a célula está vazia, mas também obtém dados textuais em vez de numéricos ... Isso é um problema na prática ou você tem alguma palavra tranquilizadora?
LudvigH

1
Ele armazena como texto. No entanto, quando você o usa em uma equação matemática, o Excel deve convertê-lo novamente em um número. Na prática, você implantaria essa solução apenas em um relatório em que já tenha feito o trabalho nos bastidores em outras planilhas ou colunas ocultas.
wbeard52

18

Aqui estão três respostas:

1) Permitir que other.cell.reference represente a fórmula de referência que você possui atualmente após o =(por exemplo,  Sheet17!$H$42), substitua essa referência de link por

=IF(other.cell.reference <>"",other.cell.reference, "")

2) Definir o formato “número” de suas células ligadas a “Custom”: General;–General;.

3) Na seção "Opções do Excel", página "Avançado", "Opções de exibição para esta planilha", desmarque a caixa de seleção "Mostrar zero nas células com valor zero". Aviso: isso fará com que todos os zeros na planilha desapareçam.


1
A primeira opção é subótima, pois requer a inserção (ou cópia) de sua fórmula duas vezes na célula. Pode ser especialmente desagradável quando você tem uma fórmula muito longa e precisa editar (ou pior, depurar) essa fórmula posteriormente. A segunda opção não parece estar funcionando para mim, mas talvez eu esteja fazendo errado. O terceiro definitivamente não é ideal, pois o alcance de seu efeito é muito mais amplo do que se poderia realmente desejar. Realmente não há opções melhores?
Iszi

@ Iszi: Em relação à primeira opção: não estou falando sobre inserir uma fórmula duas vezes. Conforme a pergunta original, estou falando de uma situação em que Q1contém uma fórmula (realmente longa) e A1contém =Q1; queremos mudar A1para o =IF(Q1<>"", Q1, "")qual você nunca precisará mudar novamente. “Realmente não há opções melhores?” Bem, essa pergunta está ociosa há nove meses, e isso é tudo o que foi publicado. Se essas respostas não forem boas o suficiente para você, poste uma nova pergunta ou faça uma recompensa por essa.
Scott Scott

É mais ou menos a mesma coisa. Embora resolva algumas das dificuldades de ter que solucionar duas instâncias de uma fórmula em uma célula, também complica um pouco as coisas adicionando outra célula ou grupo de células (caso contrário desnecessário) à mistura. Infelizmente, suponho que realmente não haja outra resposta "agradável e limpa" para isso.
Iszi 18/09

Eu postei uma pergunta relacionada há algum tempo e a única resposta que vale a pena é diferente da envolvida aqui por um script VBA.
Iszi 18/09

4

Se seus dados de referência são apenas do tipo numérico (sem texto) ou vazios, e você pode ter zeros, então essa é minha abordagem preferida, inserindo a fórmula apenas uma vez. É certo que, de uma maneira um pouco indireta, mas acho melhor porque:

  • você não precisa de células extras para inserir a fórmula e fazer referência às segundas células
  • você não precisa digitar a fórmula duas vezes
  • esse método diferencia entre um valor zero e uma célula vazia
  • não requer VBA
  • não requer intervalos nomeados

Queda : Se você precisar de dados de texto retornados, isso não funcionará. Para dados de texto, meu método preferido é usar o formato numérico, conforme mencionado em outras respostas acima.

=IFERROR((A1 & "") * 1,"")

A1 nesse caso pode ser substituído por qualquer célula, incluindo outra planilha, pasta de trabalho ou INDIRETO ().

Notas sobre como isso funciona:
IFERROR () - o segundo argumento é definido como sequência vazia, portanto, se ocorrer um erro, obteremos uma sequência vazia. Portanto, precisamos garantir que, se a célula de origem estiver vazia, um erro seja acionado.

Método numérico : especifique o valor de origem e multiplique por 1. Seqüência de caracteres vazia literal * 1 = #VALUE, A sequência com numérico é convertida automaticamente em numérica e não ocorre nenhum erro.


Interessante. Por que você acha que precisa "" & A1 & ""? Quando isso produz resultados diferentes de A1 & ""ou "" & A1?
G-Man diz 'Reinstate Monica'

@ G-man: correto e preferível. Obrigado, eu atualizei a resposta.
rayzinnz

4

Há outro truque: defina a célula vazia do soucre como fórmula ="". Veja a descrição detalhada aqui.


Essa é a solução perfeita para mim, pois as células que estou referenciando são menores do que as que as referenciam. Obrigado!
Kit

2

Eu também não encontrei uma solução melhor do que a de Scott.

Mas combinado com a abordagem daqui, pode ser quase suportável, eu acho:

http://www.ozgrid.com/Excel/named-formulas.htm

Digamos que eu tenha uma fórmula como esta

= IFERROR( INDEX(INDIRECT("EsZkouska");
  SMALL(IF((INDEX(INDIRECT("EsZkouska");;1‌​;1)="ČSN721180")*(INDEX(INDIRECT("EsZkouska");;9;1)="RC_P_B");
  ROW(INDIRECT"EsZkouska"))-MIN(ROW(INDIRECT("EsZkouska")))+1;"");1);17;1);"")

Essa fórmula lê o valor da célula de uma planilha de dados usando seleção condicional e os apresenta em outra planilha. Não tenho controle sobre a formatação de células na folha de dados.

Vou para Inserir> Nome> Definir e, em "Nomes na pasta de trabalho", crio o novo Nome "RC_P_B". Então, no campo "Refere-se a", copio minha fórmula (sem caracteres {} - é a fórmula da matriz).

Então você pode usar a fórmula de Scott sem precisar repetir o texto inteiro da fórmula:

 {=IF(RC_P_B<>""; RC_P_B;"---")}

Eu acredito que isso é melhor do que copiar toda a fórmula.


2

Simplesmente não uso uma fórmula para superar esse problema. Tudo o que faço é formatar condicionalmente as células para a fonte branca, se o valor da célula for igual a 0.


5
Isso tem o problema óbvio com células que possuem um valor 0 legítimo.
Dmitry Grigoryev

E também tem a desvantagem de diminuir a velocidade dos cálculos, especialmente para grandes planilhas, pois as fórmulas de formatação condicional são "super" voláteis. (Eles também são avaliados cada vez que a tela é redesenhada.)
robinCTS

1

Se a célula vinculada não for numérica, você poderá usar uma instrução IF com ISTEXT:

=IF(ISTEXT(Sheet1!A2), Sheet1!A2, "")

1
Mas se a célula referenciada ( Sheet1!A2no seu exemplo) contiver um número, isso exibirá uma sequência nula.
6123 Scott

Sim, não ficou claro com a pergunta quais dados estão na célula referenciada. Imaginei que, se fosse numérico, ele iria querer os zeros.
Brad Patton

1

Há muito tempo tenho procurado uma solução elegante para esse problema.

Eu tenho usado formula = if (a2 = "", "", a2) há anos, mas acho que é um pouco complicado.

Tentei acima da sugestão = a2 & "" e, embora pareça funcionar, mostra um número que é realmente texto, portanto a formatação de números não pode ser aplicada e nenhuma operação estatística funciona, como soma, média, mediana etc., por isso, se for viável os números que você procura não se encaixam na conta.

Eu experimentei algumas das outras funções e achei a solução mais elegante até hoje. Continuando o exemplo acima:

= CÉLULA ("conteúdo", A2)

retorna um valor numérico que pode ser formatado como um número e retorna um espaço em branco quando a célula referenciada está em branco. Por alguma razão, esta solução parece não aparecer em nenhuma das sugestões online que encontrei, mas


1
Eu apenas tentei isso no Excel 2013. Quando A2está em branco, isso é exibido 0. Tem certeza de que não está fazendo nada com a formatação?
Scott

1

Solução para Excel 2010:

  1. Abrir arquivo"
  2. Pressione "Opções"
  3. Clique em "Avançado"
  4. Em "Opções de exibição" para esta planilha "BBBB"
  5. Desmarque a caixa "Mostrar um valor zero para células que têm um valor zero".

Eu disse isso na (terceira opção) da  minha resposta .
Scott

0
Public Function FuncDisplayStringNoValue(MyCell As Variant) As String

Dim Result As Variant

If IsEmpty(MyCell) Then

   FuncDisplayStringNoValue = "No Value"

Else
   Result = CDec(MyCell)

   Result = Round(Result, 2)

   FuncDisplayStringNoValue = "" & Result

   End If

End Function


-1

O que funcionou para mim no Office 2013 foi:

=IF(A2=""," ",A2)

Onde no primeiro conjunto de citações não há espaço e no segundo conjunto há um espaço.

Espero que isto ajude


Por que você precisa do espaço no segundo conjunto de parênteses? Não =IF(A2="", "", A2)funciona tão bem? Como isso seria diferente =IF(A2<>"", A2, "")? Então, como isso é diferente da resposta mais votada, que foi dada há mais de dois anos?
G-Man diz 'Reinstate Monica'

-1

Eu tive um problema semelhante e acho que encontrei um método para você. Isso corrigiu meus problemas.

Se você deseja que a coluna C faça referência à coluna A e escreva apenas uma fórmula para a célula de referência, use isso e arraste a coluna para baixo.

=A1

No entanto, pode haver células de origem na coluna A que estejam em branco e precisem permanecer em branco nas células de referência na coluna C, você pode usá-lo e arrastar a coluna para baixo.

=T(A1)

No que diz respeito à formatação da célula, a referência (coluna C) precisará ser geral.


Infelizmente, essa foi uma pergunta de drive-by - o OP chegou ao Superusuário (quase três anos atrás), fez essa pergunta e nunca mais voltou. Portanto, talvez nunca saibamos os detalhes de sua situação. Mas, uma das principais (se não a principal ) função do Excel é processar números. Se os dados de origem (coluna A, no seu exemplo) contiverem números, sua resposta falhará ao preencher as células de destino com os dados numéricos.
Scott

Verifique se a formatação das células nas células que contêm a fórmula = T () é Geral e não Texto. Porque onde eu o usei, mostra totalmente números.
Will Prater

Eu chequei. É geral e está ficando em branco. (Excel 2013)
Scott

O problema pode ser que você está usando de 2013, a minha resposta eu tinha para 2010.
Will Prater

Houve uma resposta (agora excluída; você pode vê-la apenas se o seu representante for ≥10000) informando que isso também não funcionava no Excel 2010.
Scott

-1

Solução:
=IF('Wk1 Data-replace w dt bgn & end'!C2>0, 'Wk1 Data-replace w dt bgn & end'!C2, "")

Explicação:
Para resolver esse problema, usei dois conjuntos de Ifcomandos.

Parte um do comando:
Eu disse à célula para exibir o conteúdo da célula de referência se a célula de referência continha dados (o Excel interpreta isso como a célula com um valor maior que 0)

Parte dois do comando:
eu disse a ele como se comportar se não houvesse dados; "" significa deixar em branco

Nota: Wk1 Data-replace w dt bgn & end '! C2 é a minha célula de referência.


(1) Isso será exibido em branco, mesmo que a célula referenciada contenha 0 ou um número negativo. A pergunta deseja que a célula de vinculação fique em branco somente se a célula referenciada estiver em branco . (2) Se você fizer a alteração óbvia e alterar para =IF('Wk1 … bgn & end'!C2<>"", 'Wk1 … bgn & end'!C2, ""), ela se tornará equivalente a uma resposta que já foi dada aproximadamente quatro vezes.
G-Man diz 'Reinstate Monica'

-1

Todas essas soluções são muito complicadas para mim e sei que isso pode não ser viável para todos os aplicativos, mas apenas preencheu o campo de origem com um espaço em branco e recebo um espaço em branco no campo de destino.


1
Como você preenche uma célula com um espaço em branco, e o que você quer dizer com um espaço em branco?
precisa saber é o seguinte

Com licença, eu deveria ter dito um personagem espacial. Dessa forma, a célula não está realmente vazia. A célula de origem possui um espaço e o espaço é copiado para a célula de destino.
John Alonso

-1

Eu tenho uma solução trabalhando para mim:

IF(cell reference="","",cell reference)

Explicação:

""é igual a célula em branco ou vazia. Agora eu só viro o if around. Se a célula estiver em branco, deixe-a em branco; caso contrário, use a referência da célula.


Este é basicamente o mesmo como a primeira solução, em superuser.com/a/515941
Arjan

-2

Vá para Formatar células.

Em seguida, selecione o formato personalizado e digite o seguinte: 0;-0;;@


2
Você pode explicar o que isso faz? Obrigado.
fixer1234

1
Isso faz praticamente o mesmo que a segunda opção da minha resposta a esta pergunta («Defina o formato“ Número ”das células vinculadas como“ Personalizado ”: General;–General;.») - ou seja, (a) se o valor for um número positivo, exibe seu valor absoluto inteiro; (b) se o valor for um número negativo, exiba seu valor absoluto inteiro, precedido por -; (c) se o valor for zero, não exiba nada ; e (d) se o valor não for um número, exiba seu valor de texto. ... (continua)
Scott

1
(Continua)… No entanto, esta versão tem a desvantagem (ou seja, erro) de arredondar números não inteiros para o número inteiro mais próximo. ( Generalfornece o formato padrão para números, incluindo dígitos decimais conforme necessário (mas não incluindo o -sinal).) Além disso, o final ;@parece ser desnecessário (ou seja, parece ser o padrão), desde que minha resposta exiba corretamente os valores de texto sem modificação.
Scott
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.