Como evito que as fórmulas e os intervalos da formatação condicional sejam alterados automaticamente?


24

Descobri que as fórmulas e os intervalos da formatação condicional serão ajustados automaticamente quando você copiar, excluir ou mover dados em uma planilha. Embora essa seja uma boa idéia, ela tende a quebrar as coisas para mim de maneiras bem estranhas.

Para evitar isso, tentei escrever regras que se aplicavam a toda a planilha e excluíssem os cabeçalhos das colunas para destacar os dados que eu queria verificar.

Exemplo: =AND(A$1="Check This Column For Blanks),ISBLANK(A1))aplicado a=$1:$1048576

No entanto, mesmo com a regra explicitamente aplicada a toda a planilha, ela ainda estava se ajustando automaticamente (e quebrando de maneiras estranhas ao fazê-lo) enquanto eu trabalhava na planilha.

Como posso evitar isso?


Talvez você não consiga usar toda a planilha ... Você pode dar um exemplo mais concreto do que está fazendo?
Doktoro Reichard

Você poderia ter uma captura de tela e indicar quais áreas foram quebradas?
21413 Jerry

@JohnBensin Parece que é exatamente o que eu estava procurando. Vou tentar lembrar disso uma próxima vez.
Iszi

@ Iszi eu adicionei como resposta. Tenho certeza que você sabe como adicionar intervalos nomeados, mas incluo detalhes na resposta para futuros visitantes (e porque quando aprendi a usar o Excel pela primeira vez, nunca me lembro).
John Bensin

Um artigo sobre exatamente o que está errado: o pesadelo da formatação condicional do Excel 2010 . Eles com certeza tornaram muito pior ao tentar torná-lo um pouco melhor ... #
1100 RomanSt Roman

Respostas:


7

Quando preciso de um intervalo que não seja alterado em nenhuma circunstância, incluindo mover, inserir e excluir células, usei um intervalo nomeado e a INDIRECTfunção.

Por exemplo, se eu quiser que um intervalo sempre se aplique às células A1:A50, defini um intervalo nomeado por meio do Gerenciador de nomes:

adicionar intervalo nomeado

No Gerenciador de nomes, adicione um novo intervalo (clique em Novo) e, no campo Refere-se a:, use a função INDIRETO para especificar o intervalo de células que você deseja, por exemplo, =INDIRECT("A1:A50")ou =INDIRECT("Sheet!A1:A50"). Como o intervalo é tecnicamente apenas um argumento de texto, nenhuma quantidade de células reorganizadas fará com que o Excel atualize-o.

Além disso, isso funciona no mínimo no Excel 2010 e no Excel 2013. Embora minha captura de tela seja de 2013, eu usei essa técnica exata em 2010 no passado.

Ressalvas

  1. Lembre-se de que essa invariância também pode enganá-lo. Por exemplo, se você alterar o nome da planilha, o intervalo nomeado será interrompido.

  2. Percebi um pequeno impacto no desempenho ao usar essa estratégia em um número significativo de células. Um modelo usado no trabalho usa essa técnica com intervalos nomeados que abrangem vários milhares de intervalos de células diferentes, e o Excel sente um pouco lento quando eu atualizo as células nesses intervalos. Isso pode ser minha imaginação, ou pode ser o fato de o Excel estar fazendo chamadas de função adicionais para INDIRECT.


Embora o intervalo nomeado forneça um método prático e abreviado de referência às células de destino, você não poderia simplesmente usar a INDIRECTfunção por conta própria?
Iszi 22/09

@ Iszi Sim, acredito que sim. No entanto, como você diz, os intervalos nomeados são convenientes, e muitas vezes me vejo me referindo ao mesmo intervalo de células em vários locais da pasta de trabalho. Eu tento manter os intervalos o menor possível, por razões de desempenho, e apenas alterá-los quando necessário; portanto, usar um intervalo nomeado significa que eu só preciso alterá-lo em um só lugar.
John Bensin

@Iszi Você acabou usando esse método? Se você se deparar com armadilhas ou inconvenientes que não mencionei, informe-os ou edite-os na resposta. Uso essa estratégia em lugares suficientes para não querer que algo volte a assombrar você ou eu no caminho.
John Bensin

Ainda não cheguei a implementá-lo, mas provavelmente o farei na próxima vez que encontrar esse problema. Avisarei se houver algum problema.
Iszi 27/09/2013

9
Tentei usar o intervalo nomeado na coluna "Aplica-se a" do Gerenciador de Regras de Formatação Condicional, mas o intervalo nomeado é expandido quando clico em "OK" ou "Aplicar". Estou fazendo errado?
Mihai Alexandru Bîrsan

2

Descobri que as regras são muito fáceis de violar, mas aqui está algo que você pode tentar que parece não violar nenhuma regra.

Você pode alterar o texto dentro das células. Se você precisar adicionar uma linha, adicione seus dados no final da sua tabela e reordene-os. Se você precisar excluir uma linha, remova apenas o texto / números e reordene a tabela.

Isso funciona para mim quando tenho uma formatação condicional aplicada às colunas e geralmente defino a formatação para toda a coluna, por exemplo. $ F: $ F. Ainda deve funcionar se você estiver formatando para um intervalo parcial, apenas certifique-se de que, ao terminar de adicionar / remover e recorrer, todos os dados que você deseja formatar ainda estejam dentro dos parâmetros originais do intervalo.

É uma enorme frustração para mim também.

Eu espero que isso ajude.


1

Não tenho tanta certeza e enfrento o mesmo problema com frequência.

Eu diria que o campo 'Aplicar a' no painel Formatação condicional (CF) sempre funcionará dinamicamente. Portanto, SEMPRE converterá qualquer referência ao formato =$A$1:$A$50.

É uma dor.


Não é, mesmo quando eu uso declarações explícitas ou variáveis ​​($ ou não $).
Paul

1

Descobri que o uso da INDIRECTfunção e da ROWfunção na regra Formatação condicional elimina o problema do Excel criando novas regras e alterando o intervalo.

Por exemplo, eu queria adicionar uma linha entre linhas na minha planilha de registro de cheques quando o mês mudou de uma linha para a seguinte. Então, minha fórmula na regra CF é:

=MONTH(INDIRECT("C"&ROW()))<>MONTH(INDIRECT("C"&ROW()-1))

onde a coluna C da minha planilha contém a data. Não precisei fazer nada de especial no intervalo (não tive que definir um nome de intervalo etc.).

Portanto, no exemplo do pôster original, em vez de "A1" ou "A $ 1" na regra CF, use:

INDIRECT("A"&ROW())

0

Eu experimentei um problema muito semelhante. Fiz algumas macros para adicionar linhas, copiar fórmulas e ajustar as colunas e os tamanhos das linhas para formatar a aparência da planilha. Descobri que esse problema ocorre em uma de duas ocasiões.

1) Quando algo do INSIDE o "aplica-se a" é cortado / colado fora deste intervalo.

2) Quando houver células mescladas dentro de "aplica-se a", e qualquer uma das linhas ou colunas será ajustada.

Aparece durante o problema de célula mesclada, que o excel precisa unir tudo, recalcular sua aplicação condicional, ajustar todas as células (adicionar ou excluir linhas ou não) e depois ressurgi-las novamente. É invisível para nós, mas parece que é assim que é aplicado.

Pensamento que pode nos ajudar a encontrar a solução para isso.

-T


0

Eu tenho uma solução simples para isso.

Basta ir para uma célula que esteja dentro do intervalo (a que não está quebrada no intervalo), clique em Pincel e cole em toda a coluna. Novamente, ele mostrará Onde está quebrado, você só precisa fazer um Pincel para a célula que tenha quebrado o intervalo. Agora, isso também pode parecer um pouco demorado, você pode criar uma macro simples para isso.


0

Na fórmula Formatação condicional, use a R1C1notação com a INDIRECTfunção:
Exemplo 1:

If same row column A = 1 ...

=IF($A1=1,1,0) becomes 
=IF(INDIRECT("RC1",FALSE)=1,1,0)

Exemplo 2:
If same row column A = 2 AND next row column A = 3...

=IF(AND(($A1=2),($A2=3)),1,0) becomes
=IF(AND((INDIRECT("RC1",FALSE)=2),(INDIRECT("R[1]C1",FALSE)=3)),1,0)

0

Se o caso de uso for gerar uma planilha de relatório, isso deve funcionar bem:


Você pode ignorar a utilidade excessiva do Excel com algumas etapas de instalação únicas, se também estiver disposto a executar manualmente uma atualização simples dos dados finais depois de fazer toda a entrada de dados.

Supondo que seus dados sejam organizados normalmente (em linhas):

  1. Insira todos os seus dados em uma folha. Para este tutorial, vou nomear a planilha Input. Não aplique nenhuma formatação condicional a ele. Sinta-se à vontade para mudar os valores para o conteúdo do seu coração (por exemplo, excluir / inserir / copiar / colar)
  2. Crie outra folha vazia e nomeie-a como desejar (por exemplo Output). Copie manualmente sua formatação global, como larguras de coluna e formatação de cabeçalho (não o conteúdo dos cabeçalhos, apenas a formatação).
  3. Substituir $A$1na fórmula a seguir com a localização do início da sua linha de cabeçalho, em seguida, copiar em todas as colunas e linhas que deseja saída: =IF(LEN(OFFSET(Input!$A$1,ROW()-1,COLUMN()-1))>0,OFFSET(Input!$A$1,ROW()-1,COLUMN()-1),"") (a IF(LEN(...)>0,...,"")declaração é necessário porque Excel também prestativamente determina os tipos de dados para você e usos 0para as células vazias de outra forma, e os -1termos vêm de semântica offset versus ordinal)
  4. Aplique formatação condicional à Outputplanilha.

Isso copia sua Inputplanilha de dados para Outputplanilha sem nenhuma referência de célula que o Excel automatizasse automaticamente para que você possa definir com segurança sua formatação condicional na Outputplanilha.

Você só precisa estender manualmente o intervalo ao qual a fórmula é aplicada na Outputplanilha, à medida que o tamanho dos seus Inputdados muda.

Eu sugiro que você evite mesclar células.


PS Esta pergunta já foi feita várias vezes (também se aplica ao Planilhas Google, que é um clone do Excel), para que você possa encontrar uma solução melhor para o seu caso de uso, examinando-as:

  1. Fragmentação de formatação condicional do Excel
  2. (este) Como impedir que as fórmulas e os intervalos da formatação condicional sejam alterados automaticamente?
  3. Preservar a formatação condicional na pasta recortada
  4. Excel: como aplicar permanentemente a formatação condicional a toda a planilha?
  5. Por que o Excel está massacrando minha Formatação Condicional?

0

Se você colar sem formato ( Paste > Paste Special > Unicode Textou similar), a formatação especial não será copiada e, como tal, o intervalo "Aplica-se a" não deve ser alterado.

Você pode excluir linhas / colunas, mas se as inserir, o intervalo "Aplica-se a" será dividido.

Você estende a área selecionando a última linha / coluna e "copie e arraste" no pequeno quadrado no canto inferior esquerdo do "cursor". Dessa forma, o intervalo "Aplicar a" deve permanecer intacto. (Observe que isso não estenderá nenhuma fórmula em linhas ou colunas, como a inserção faz.)

É, no entanto, uma dor total lembrar de colar sem formato, etc. Normalmente, não faço.

Às vezes, também defino um nome para a área que quero formatar. Ele não será usado na regra, mas você pode limpar a regra removendo todas as regras, exceto uma, e usar o nome da área na seção "Aplica-se a".

Eu testei em um Mac usando o Excel 16.3 (acho que o Office 2016 ... hmm).

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.