Classifique a coluna B enquanto mantém a ordem da coluna A

0

No Excel, tenho duas colunas. Eu quero classificar o segundo em ordem alfabética, mantendo a ordem (personalizada) no primeiro (pense std :: stable_sort onde a igualdade é baseada apenas na primeira coluna). Exemplo:

dsf   k
www   d
www   a
azd   q
azd   e
azd   b

deve se tornar

dsf   k
www   a
www   d
azd   b
azd   e
azd   q

O assistente de classificação não parece ter nenhuma opção de "manter a ordem atual". Eu poderia definir a ordem personalizada, mas tenho mais de mil elementos diferentes; isso seria uma dor de verdade e essa ordem personalizada pode ser alterada a qualquer momento.

    
por 0xFF 29.11.2013 / 20:36

3 respostas

1

Suponho que seus dados começam na Fila 2 e que Coluna C está disponível para uso como uma "coluna auxiliar". Coloque

=IF(A1=A2, C1, C1+1)

na célula C2 . Se a coluna C não estiver disponível, use uma que seja. Se seus dados começarem na Linha 1, insira uma linha em branco, ou (ainda) coloque o acima na célula C2 , mas coloque 1 na célula C1 .) Arraste / preencha. Isso (Coluna C ) agora “documenta” seu pedido personalizado; por exemplo, C2 = 1, C3 = C4 = 2 e C5 = C6 = C7 = 3. Agora, classifique em Coluna C e Coluna B .

    
por 30.11.2013 / 22:30
0

Rápido e sujo: -

  1. Copie o conteúdo da coluna A para o bloco de notas e, em seguida, recópia para a área de transferência.
  2. Selecione as duas colunas.
  3. Selecione a função de classificação e classifique a coluna A usando a ordem "lista personalizada".
  4. Insira os dados da área de transferência na lista personalizada.
  5. Adicione um nível à função de classificação e, em seguida, classifique pela coluna B, "do menor para o maior".
por 29.11.2013 / 21:07
0

Acho que sua melhor aposta é usar pedidos personalizados. Se não precisar ser atualizado com frequência, você poderá fazer isso por FILE>OPTIONS>ADVANCED>EDIT CUSTOM LISTS... e importar todo o intervalo. Então use isso quando ordenar.

A solução VBA seria algo como

Sub sort()
Dim iCustListNum As Integer

iCustListNum = Application.CustomListCount + 1
Application.AddCustomList ListArray:=Range("A2:A100")

On Error GoTo err:

'Sort your list
Range("A1:B100").sort Key1:=Range("A1"), Order1:=xlAscending, OrderCustom:=iCustListNum, _
    Key2:=Range("B1"), Order2:=xlAscending, Header:=xlYes, _
    MatchCase:=False, Orientation:=xlTopToBottom

'Clean up
err:
Application.DeleteCustomList ListNum:=iCustListNum

End Sub
    
por 29.11.2013 / 21:03