Este tutorial demonstrará como classificar valores em uma matriz em VBA
Classificando uma matriz unidimensional usando um loop
Classificar um Array requer um pouco de manipulação de dados usando loops, variáveis e arrays temporários.
- Você primeiro precisa preencher a matriz com seus valores
- Em seguida, você precisa fazer um loop pela matriz duas vezes! Uma vez para obter um valor do array do elemento atual, e o tempo ainda nesse loop, para obter o valor do próximo elemento no array.
- Em seguida, você precisa comparar os elementos - e mover o segundo elemento para a posição do primeiro, se o segundo estiver em ordem alfabética ANTES do primeiro.
O exemplo a seguir demonstra esse procedimento.
1234567891011121314151617181920212223 | Sub SortAnArray ()Dim i enquanto'Defina a matrizDim strNome () como varianteDim Temp como variante'preencher a matrizstrName () = Array ("Bob Smith", "John Davies", "Fred Jones", "Steve Jenkins", "Bob Williams")'percorrer o limite do arry e obter o primeiro nomePara i = LBound (strName) To UBound (strName) - 1'percorrer novamente e verificar se o próximo nome está em ordem alfabética antes ou depois do originalPara j = i + 1 para UBound (strName)If UCase (strName (i))> UCase (strName (j)) Then'se o nome precisar ser movido antes do nome anterior, adicione a uma matriz temporáriaTemp = strNome (j)'trocar os nomesstrNome (j) = strNome (i)strNome (i) = TempFim sePróximo jProximo eu'Envie o Array por meio de uma caixa de mensagemMsgBox Join (strName (), vbCrLf)End Sub |
Se você executar este procedimento, receberá a seguinte caixa de mensagem.
Você também pode classificar a matriz na outra direção - por exemplo: Z para A alterando esta linha de código
1 | If UCase (strName (i))> UCase (strName (j)) Then |
para esta linha de código
1 | If UCase (strName (i)) <UCase (strName (j)) Then |
Você receberá a seguinte caixa de mensagem.