VBA Sort Array

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.

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave