Relativamente fácil de fazer com o VBA e uma função definida pelo usuário. Como há apenas alguns itens para classificar, usei um simples BubbleSort. Outros métodos também podem ser usados.
Para entrar nesta Função Definida pelo Usuário (UDF), alt-F11 abre o Editor do Visual Basic. Certifique-se de que seu projeto esteja destacado na janela Explorador de Projetos. Em seguida, no menu superior, selecione Inserir / Módulo e cole o código abaixo na janela que é aberta.
Para usar esta função definida pelo usuário (UDF), insira uma fórmula como
=sortAlpha(A1:C1)
em um intervalo de células que se estende pelo seu destino (por exemplo: E1: G1) e, em seguida, preencha.
Esta é uma fórmula de matriz e retornará uma matriz de valores. Então, para entrar você pode, por exemplo:
- Primeiro selecione E1: G1
- Em seguida, coloque o cursor na barra de fórmulas e insira a fórmula
- Finalmente, em vez de apenas apertar enter , você deve manter pressionado ctrl + shift enquanto pressiona enter . Se você fizer isso corretamente, o Excel colocará chaves {...} ao redor da fórmula
Option Explicit
'Comment out next line for case sensitive sorting
Option Compare Text
Function sortAlpha(rg As Range) As String()
Dim S() As String
Dim C As Range
Dim I As Long
ReDim S(0 To rg.Count - 1)
For Each C In rg
S(I) = C.Text
I = I + 1
Next C
SingleBubbleSort S
sortAlpha = S
End Function
Sub SingleBubbleSort(TempArray As Variant)
'copied directly from support.microsoft.com
Dim Temp As Variant
Dim I As Integer
Dim NoExchanges As Integer
' Loop until no more "exchanges" are made.
Do
NoExchanges = True
' Loop through each element in the array.
For I = LBound(TempArray) To UBound(TempArray) - 1
' If the element is greater than the element
' following it, exchange the two elements.
If TempArray(I) > TempArray(I + 1) Then
NoExchanges = False
Temp = TempArray(I)
TempArray(I) = TempArray(I + 1)
TempArray(I + 1) = Temp
End If
Next I
Loop While Not (NoExchanges)
End Sub