Excel 2007: Formatação condicional para que cada linha mostre valores baixos em amarelo e valores altos em vermelho

14

Eu tenho uma planilha com aproximadamente 300 linhas. Cada linha possui cerca de 15 colunas e cada célula contém um valor numérico. Cada linha corresponde a um produto.

Quero que o Excel, para cada produto, destaque as células com os números mais altos em vermelho e os números mais baixos em amarelo, com um gradiente para os números intermediários. É o que acontece se eu selecionar uma linha (especificamente, as 15 células na linha que contêm meus dados) e clicar em Formatação Condicional> Escalas de Cores> Escala de Cores Vermelho-Amarelo.

No entanto, tenho 300 linhas e levará muito tempo para selecionar cada linha individualmente e definir a formatação condicional. Por outro lado, se eu selecionar o intervalo inteiro e aplicar a Formatação Condicional, o Excel calculará as cores com base em todo o intervalo, quando, na verdade, eu quero que elas sejam calculadas linha a linha. Por exemplo, pegue estes dados de amostra:

1 2 3
4 5 6
7 8 9

A saída que eu quero, usando Y para amarelo, O para laranja, R para vermelho, é:

Y O R
Y O R
Y O R

No entanto, se eu selecionar o intervalo inteiro e aplicar a Formatação Condicional, recebo:

Y Y Y
O O O
R R R

Existe uma maneira de fazer isso sem fazer uma linha de cada vez?

Michael Pavey
fonte
@ wizlog: Isso mesmo. O valor mais alto em uma linha deve ser vermelho, o valor mais baixo nessa linha deve ser amarelo e os outros valores devem estar em algum lugar no meio (quanto mais próximo do valor mais alto, mais vermelho).
Michael Pavey
Eu gosto desta pergunta ... Vou ver se consigo encontrar uma resposta ... Provavelmente levará algumas horas antes que eu possa ajudar novamente, espero que outros membros do SuperUser encontrem uma resposta para você dentro do prazo ..
wizlog
Eu também gosto dessa pergunta. Mas não vejo outra maneira de abordar isso além de usar uma macro. Espero que alguém me prove errado.
Ellesa

Respostas:

15

Aqui está uma macro que cria um formato condicional para cada linha da sua seleção. Isso é feito copiando o formato da primeira linha para CADA linha na seleção (uma por uma, não totalmente). Substitua B1: P1 pela referência à primeira linha na sua tabela de dados.

Sub NewCF()
    Range("B1:P1").Copy
    For Each r In Selection.Rows
        r.PasteSpecial (xlPasteFormats)
    Next r
    Application.CutCopyMode = False
End Sub

Para usar, destaque as linhas não formatadas no seu conjunto de dados (no meu caso, B2: P300 ) e execute a macro. No exemplo abaixo, observe que os números máximos nas duas primeiras linhas são 5 e 15 , respectivamente; ambas as células são vermelho escuro .

Tenho certeza de que existe uma solução mais rápida do que isso, no entanto.

insira a descrição da imagem aqui

Ellesa
fonte
1
Obrigado, isso funcionou lindamente. Também é um ótimo exemplo do valor de pedir ajuda quando não tenho certeza ... Fiquei assustado com a idéia de usar uma macro, pois presumi que precisaria aprender como configurar a formatação condicional do zero. Obtendo a macro apenas para copiar a formatação existente é muito mais astuto :)
Michael Pavey
@MichaelPavey Fico feliz em poder ajudar! E bem-vindo ao Superusuário! :)
Ellesa 26/10
1
+ 1. Se eu interessados de ninguém levou este conceito ainda mais no meu blog: yoursumbuddy.com/conditional-formatting-per-row-color-scales
Doug Glancy
É ridículo que esse tipo de coisa não seja incorporada ao Excel como um recurso. É incomum querer comparar linhas dessa maneira?
21413 Alex
5

A maneira mais fácil de fazer isso é copiar / colar de forma incremental. Primeiro, formate 1 linha da maneira que desejar. Em seguida, copie e cole a formatação apenas para APENAS uma segunda linha. Agora copie AMBAS as linhas 1 e 2 e cole a formatação nas linhas 3 e 4. Enxágue e repita: Copie 4, últimos 4, copie 8, cole 8, copie 16, cole 16. Depois de obter uma quantidade decente como 16, cole-o algumas vezes para obter 64 ou 128. Em seguida, você pode copiá-los e colar sua formatação, e está cobrindo exponencialmente mais território do que antes.

Não é elegante e, na minha experiência, os recursos necessários para formatar condicionalmente a linha de comer começam a chegar ao máximo em torno de 2500 linhas ... mas é o trabalho que você faz.

Eu só queria que houvesse lógica que não criasse um formato condicional separado para cada linha, consumindo recursos ...

Poultron
fonte
Acho que o OP disse "No entanto, tenho 300 linhas e levará muito tempo para selecionar cada linha individualmente e definir a formatação condicional". na questão
Prasanna
@Poultron, obrigado! Para adicionar isso: Usando Ctrl / Cmd + Shift + Up / right, você pode selecionar facilmente todas as linhas e colunas anteriores, para não precisar contar as linhas anteriores. Então, quando estiver pronto para colar, basta posicionar o cursor na primeira célula abaixo das linhas já formatadas e somente no Formato Especial de Pasta, que se estenderá para abranger tantas linhas quantas foram copiadas. Ctrl / Cmd + Shift + V também lembrará a última pasta especial que você deseja usar, portanto, todo o processo ocorre rapidamente. Apenas usei em duas planilhas com 600 linhas cada.
Oskar Austegard
Eu fiz isso em uma mesa com ~ 100 linhas e funcionou lindamente. Foram realizadas apenas 7 iterações do Format Painter.
precisa saber é o seguinte
0

Acabei de encontrar este e outros exemplos de como fazer isso via VBA e isso me fez pensar e descobri uma maneira relativamente rápida e indolor de fazer a mesma coisa sem ter que saber ou copiar qualquer script.

Aplique a formatação condicional desejada à linha que você deseja e realce a linha inteira. Próximo Clique com o botão direito do mouse em qualquer lugar ao longo da borda (o mouse deve ser o ícone Mover) e arraste para a próxima linha. No menu de contexto que aparece, selecione "Copiar aqui como apenas formatos". Agora você deve ter seu Formato Condicional aplicado às duas linhas separadamente. Continue fazendo isso recursivamente, exceto que agora você pode selecionar e copiar 2 ou mais linhas por vez.

Não é um acordo único como o código acima, mas é exponencialmente mais rápido do que fazer uma linha de cada vez. Espero que isto ajude.

Chris S
fonte
0

Você também pode aplicar a formatação da condição a uma linha. Destaque a linha novamente e clique duas vezes em "Format Painter" para bloqueá-la. Use a tecla de seta para baixo para aplicar a condição para outras linhas.

Para minha empresa, geralmente bloqueia macro no excel, então isso funciona para mim. espero que ajude você também.

Genx
fonte