Excel: usando texto de uma célula como o nome de uma planilha em uma equação de formatação condicional

0

O título realmente expressa inteiramente o que eu estou tentando fazer, mas é um pouco complicado e misterioso, então vou explicar com um caso de uso:

Se eu tiver uma pasta de trabalho do Excel com duas folhas (SheetA e SheetB) muito próximas uma da outra, e gostaria que as diferenças se destacassem visualmente, uma maneira típica de fazer isso pode ser algo assim:

  • Na FolhaA, destaque todas as células
  • Insira a formatação condicional, Nova regra, Use a fórmula
  • Na caixa da fórmula, digite:

    =a1<>SheetB!a1

  • aplique a formatação desejada e clique em "OK"

Basicamente, o que isso faz é comparar cada célula da SheetA com sua contraparte na SheetB e, se forem desiguais, aplique a formatação. Se os nomes das folhas forem complexos (especialmente se eles contiverem espaços e, portanto, precisarem de aspas), clicar no nome da guia durante a entrada da fórmula é útil.

Mas agora suponha que em alguma célula de SheetA, eu inseri uma expressão de texto contendo o nome de SheetB, e gostaria de referenciar essa célula na fórmula de formatação condicional acima.

(Por quê? Eu posso ter 100 planilhas e gostaria de comparar 1 a 2, depois 1 a 3, depois 1 a 55, alterando o texto na célula, em vez de alterar manualmente a formatação condicional de cada vez.)

Como posso fazer isso?

Estou ciente de que a função INDIRECT é usada para transformar texto em nomes de folhas e ter tentado várias variações nesse tema, usando a função INDIRECT como parte da fórmula de formato condicional, mas nada parece realmente funcionar.

    
por Novak 09.03.2018 / 23:41

1 resposta

2

Use uma fórmula de formato condicional como esta:

= A1 <> INDIRECT(ADDRESS(ROW(A1), COLUMN(A1),,, aSheet), TRUE)

Substitua aSheet por uma referência à célula em que você armazenou o nome da planilha para comparar.

A função ADDRESS() monta uma referência de célula como uma cadeia de texto, usando as funções ROW() e COLUMN() para calcular a linha e a coluna da célula que está sendo avaliada.

Você pode ignorar a função ADDRESS() e apenas criar a referência de célula no formato R1C1 usando a concatenação de string, mas a fórmula acima é provavelmente mais fácil de ler e entender. O equivalente seria:

= A1 <> INDIRECT(aSheet & "!R" & ROW(A1) & "C" & COLUMN(A1), FALSE)
    
por 12.03.2018 / 12:53