Classificar automaticamente um intervalo de células após uma célula dentro do intervalo ter sido modificada?

1

Eu tenho um número de intervalos verticais nomeados em uma planilha, contendo listas de nomes. Novos nomes são geralmente adicionados manualmente no final de cada lista. Obviamente, isso significa que, a menos que sejam ordenadas manualmente, as listas não estarão em ordem alfabética. Existe alguma maneira, por meio de uma macro, se necessário, de que cada intervalo seja ordenado automaticamente uma vez que qualquer uma de suas células componentes tenha sido modificada? A idéia seria ter cada lista / intervalo em ordem alfabética imediatamente após um determinado usuário adicionar um novo nome a ela.

Eu não investiguei muito o VBA para Excel nem automatizei sua funcionalidade de classificação, por isso perdoe minha ignorância se a resposta for um pouco óbvia demais.

    
por fbordas 24.04.2014 / 02:11

1 resposta

1

Ok, eu fiz isso. Como Raystafarian sugeriu, eu segurei o evento Worksheet_Change e usei a função Range().Sort para obter minhas colunas ordenadas. Cada coluna tem um cabeçalho e eu queria que eles fossem ordenados alfabeticamente em ordem crescente, então aqui está minha função:

Private Sub Worksheet_Change(ByVal Target As Range)
    Range("A2:A100").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlYes
    Range("B2:B100").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlYes
    Range("C2:C100").Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlYes
    Range("D2:D100").Sort Key1:=Range("D1"), Order1:=xlAscending, Header:=xlYes
    Range("E2:E100").Sort Key1:=Range("E1"), Order1:=xlAscending, Header:=xlYes
    Range("F2:F100").Sort Key1:=Range("F1"), Order1:=xlAscending, Header:=xlYes
End Sub

Não pode ser uma solução particularmente elegante ou infalível, mas resolve meu problema perfeitamente e com um pouco de treinamento, os usuários saberão não modificar as colunas do cabeçalho.

Obrigado, Raystafarian!

    
por 03.05.2014 / 20:32