Macro VBA para classificar e aplicar formatação condicional a um intervalo de células com número dinâmico de linhas

0

Eu tenho um intervalo (a imagem abaixo).

Porfavor,noteque:

  • Ointervaloégeradoporoutroaplicativo,portanto,onúmerodelinhasestásempremudandoenãoéformatadocomouma'tabela'doExcel
  • Onúmerodecolunas,noentanto,éfixo.
  • HásempreumaTotalsrow,queésempreaúltimalinha(ascélulasalémdessa,noentanto,contêmafórmulaqueavaliacomo'')

DesejoajudacomumaMacroVBAqueclassificaráointervalousandoocabeçalhoDcomochave(crescente):

[Vejaolinkparaatabelaclassificadaabaixo]

Porfavor,noteque:

  • ATotalsrow(queésempreaúltimalinha)deveserignoradaenãoclassificada.

Apósessetipodeclassificação,desejoqueamesmamacroVBAapliqueaformataçãocondicionalaointervalousandoomesmocabeçalhoDaskey-aformataçãoaplicaumabordaaoredordointervaloemqueDéomesmo:

Atabelafinalestáaqui: link

Por favor, note que:

  • Eu não quero bordas em torno de valores únicos no cabeçalho D i.e linhas nas quais a contagem do valor da célula não é maior que 1.
por yinka 20.12.2013 / 21:26

1 resposta

0

Você não precisa de nenhum VBA. Você só precisa entender melhor a flexibilidade por trás dos formatos condicionais. Por causa disso, vou responder à pergunta mesmo que seja ruim.

Você pode classificar pela coluna D como está e a linha de totais ficará na parte inferior se for a única com espaço em branco. Aplique seus formatos condicionais à coluna inteira, conforme mostrado abaixo.

Formato: bordas à esquerda
Intervalo: A:A
Fórmula: =AND($D1<>"",OR($D1=OFFSET($D1,-1,0),$D1=OFFSET($D1,1,0)))

Formato: bordas à direita
Intervalo: E:E
Fórmula: =AND($D1<>"",OR($D1=OFFSET($D1,-1,0),$D1=OFFSET($D1,1,0)))

Formato: fronteiras no topo Intervalo: A:E
Fórmula: =AND($D1<>"",$D1<>OFFSET($D1,-1,0),$D1=OFFSET($D1,1,0))

Formato: bordas no fundo
Intervalo: A:E
Fórmula: =AND($D1<>"",$D1=OFFSET($D1,-1,0),$D1<>OFFSET($D1,1,0))

Este método irá virar esta folha:

...nestaplanilha:

    
por 12.03.2015 / 21:18