Array di ordinamento VBA

Questo tutorial dimostrerà come ordinare i valori in un array in VBA

Ordinamento di un array unidimensionale utilizzando un ciclo

L'ordinamento di un array richiede un po' di manipolazione dei dati utilizzando loop, variabili e array temporanei.

  • Per prima cosa devi popolare l'array con i tuoi valori
  • È quindi necessario eseguire il ciclo dell'array due volte! Una volta per ottenere un valore dall'array di elementi corrente e mentre è ancora in quel ciclo, per ottenere il valore dell'elemento successivo nell'array.
  • È quindi necessario confrontare gli elementi e spostare il 2° nella posizione del primo se il 2° è in ordine alfabetico PRIMA del 1°.

L'esempio seguente mostra questa procedura.

1234567891011121314151617181920212223 Sub SortAnArray()Dim I As Long'Imposta l'arrayDim strName() come varianteDim Temp come variante'popola l'arraystrName() = Array("Bob Smith", "John Davies", "Fred Jones", "Steve Jenkins", "Bob Williams")'passa attraverso il limite dell'arry e prendi il nomePer i = LBound(strName) a UBound(strName) - 1'ripeti e controlla se il nome successivo è in ordine alfabetico prima o dopo l'originalePer j = i + 1 a UBound(strName)If UCase(strName(i)) > UCase(strName(j)) Then'se il nome deve essere spostato prima del nome precedente, aggiungilo a un array temporaneoTemp = strName(j)'scambiate i nomistrNome(j) = strNome(i)strName(i) = TempFinisci seAvanti jAvanti io'Emetti l'array tramite una finestra di messaggioMsgBox Join(strName(), vbCrLf)Fine sottotitolo

Se esegui questa procedura, otterrai la seguente finestra di messaggio.

Puoi anche ordinare l'array nell'altra direzione, ad esempio: da Z ad A cambiando questa riga di codice

1 If UCase(strName(i)) > UCase(strName(j)) Then

a questa riga di codice

1 Se UCase(strName(i)) < UCase(strName(j)) Then

Si otterrebbe quindi la seguente finestra di messaggio.

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave