VBA – Classificar Matriz
Este tutorial demonstrará como classificar valores em uma matriz no VBA.
Classificação de uma Matriz Unidimensional Usando um Loop
A classificação de uma matriz requer um pouco de manipulação de dados usando loops, variáveis e matrizes temporárias.
- Primeiro, você precisa preencher a matriz com seus valores.
- Em seguida, você precisa fazer um loop na matriz duas vezes! Uma vez para obter um valor da matriz do elemento atual e, enquanto ainda estiver nesse loop, para obter o valor do próximo elemento da matriz.
- Em seguida, você precisa comparar os elementos e mover o segundo elemento para a posição do primeiro se o segundo estiver alfabeticamente ANTES do primeiro.
O exemplo abaixo demonstra esse procedimento.
Sub ClassificarUmaMatriz()
Dim i As Long
Dim j as Long
'Definir a matriz
Dim strNome() As Variant
Dim Temp As Variant
'preencher a matriz
strNome() = Array("Bob Smith", "John Davies", "Fred Jones", "Steve Jenkins", "Bob Williams")
'loop through bound of the arry and get the first name
For i = LBound(strNome) To UBound(strNome) - 1
'repetir o loop novamente e verificar se o próximo nome está em ordem alfabética antes ou depois do original
For j = i + 1 To UBound(strNome)
If UCase(strNome(i)) > UCase(strNome(j)) Then
'se o nome precisar ser movido antes do nome anterior, adicione-o a uma matriz temporária
Temp = strNome(j)
'trocar os nomes
strNome(j) = strNome(i)
strNome(i) = Temp
End If
Next j
Next i
'Exibir a matriz por meio de uma caixa de mensagem
MsgBox Join(strNome(), vbCrLf)
End Sub
Se você executar esse procedimento, obterá a seguinte caixa de mensagem.
Você também pode classificar a matriz na outra direção, por exemplo, de Z para A, alterando esta linha de código
If UCase(strNome(i)) > UCase(strNome(j)) Then
para esta linha de código
Se UCase(strNome(i)) < UCase(strNome(j)) Then
Você verá a seguinte caixa de mensagem.