Excel 2007: formatação condicional para que cada linha mostre valores baixos amarelos, valores altos vermelhos

11

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

Eu 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 números entre eles. Isso é o que acontece se eu selecionar uma linha (especificamente, as 15 células da linha que contêm meus dados) e, em seguida, 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 calcula as cores com base no intervalo inteiro, quando na verdade eu quero que elas sejam calculadas linha a linha. Por exemplo, pegue esses 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, obtenho:

Y Y Y
O O O
R R R

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

    
por Michael Pavey 25.10.2011 / 18:02

3 respostas

11

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 a uma, não completamente). Substitua B1: P1 pela referência à primeira linha da 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, em seguida, execute a macro. No exemplo abaixo, observe que os números máximos nas primeiras duas linhas são 5 e 15 , respectivamente; ambas as células são vermelho escuro .

Tenho certeza de que há uma solução mais rápida do que isso.

    
por 25.10.2011 / 20:48
3

A maneira mais fácil de conseguir isso é copiar / colar incrementalmente. Primeiro, formate 1 linha do jeito que você quiser. Em seguida, copie e passe a formatação somente para APENAS uma segunda linha. Agora copie BOTH linhas 1 e 2 e cole a formatação nas linhas 3 e 4. Enxague e repita, Copie 4, 4 anteriores, copie 8, cole 8, copie 16, cole 16. Assim que tiver um valor decente como 16, cole-o algumas vezes para obter até 64 ou 128. Depois, você pode copiá-lo e colar sua formatação, e você está exponencialmente cobrindo mais território do que antes.

Não é elegante e, na minha experiência, os recursos necessários para formatar condicionalmente o início da linha começam a ficar em torno de 2.500 linhas ... mas o trabalho é feito.

Gostaria que houvesse uma lógica que não criasse um formato condicional separado para cada linha, sobrecarregando recursos ...

    
por 05.04.2016 / 16:22
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 precisar conhecer ou copiar qualquer script.

Aplique a formatação condicional desejada à linha desejada e, em seguida, destaque a linha inteira. Clique com o botão direito 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 somente formatos". Agora você deve ter seu formato condicional aplicado a ambas as linhas separadamente. Em seguida, continue a fazer isso de forma recursiva, exceto que agora você pode selecionar e copiar 2 ou mais linhas de cada vez.

Não é um negócio único, como o código acima, mas é exponencialmente mais rápido do que fazer uma linha por vez. Espero que isso ajude.

    
por 30.07.2015 / 04:39