la seguente funzione serve per ordinare, in maniera crescente o descrescente, un array di dati alfa-numerici.
esempio di chiamata:
funzione:codice:mioArray = ordinaArrayAlfaNumerico(mioArray, "desc")
codice:Function ordinaArrayAlfaNumerico(arrayDaOrdinare, tipoOrdinamento) ReDim arrayOrdinato(UBound(arrayDaOrdinare)) stringaCaratteri = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,r,t,u,v,w,x,y,z" ArrayCaratteri = split(stringaCaratteri,",") If LCase(tipoOrdinamento)="desc" Then ordinamentoArray = 1 Else ordinamentoArray = 0 End If For i = LBound(arrayDaOrdinare) to UBound(arrayDaOrdinare) puntatore = (UBound(arrayDaOrdinare)+1) valoreDaControllare = arrayDaOrdinare(i) For z = LBound(arrayDaOrdinare) to UBound(arrayDaOrdinare) sommaPosizioniB = "" sommaPosizioniA = "" For countCaratteri = 1 to Len(valoreDaControllare) For countArrayCaratteri= LBound(ArrayCaratteri) to UBound(ArrayCaratteri) If ArrayCaratteri(countArrayCaratteri) = LCase(Mid(valoreDaControllare,countCaratteri,1)) Then sommaPosizioniA = sommaPosizioniA & countArrayCaratteri End If If ArrayCaratteri(countArrayCaratteri) = LCase(Mid(arrayDaOrdinare(z),countCaratteri,1)) Then sommaPosizioniB = sommaPosizioniB & countArrayCaratteri End If Next Next If sommaPosizioniA = "" Then sommaPosizioniA = 1 Else sommaPosizioniA = sommaPosizioniA If sommaPosizioniB = "" Then sommaPosizioniB = 1 Else sommaPosizioniB = sommaPosizioniB Select Case ordinamentoArray Case 0 If sommaPosizioniA<=sommaPosizioniB Then puntatore=puntatore - 1 End If Case 1 If sommaPosizioniA>=sommaPosizioniB Then puntatore=puntatore - 1 End If End Select Next If arrayOrdinato(puntatore)="" Then arrayOrdinato(puntatore) = valoreDaControllare Else controlUguali = 0 For p = LBound(arrayOrdinato) to UBound(arrayOrdinato) If LCase(arrayOrdinato(p)) = LCase(valoreDaControllare) Then controlUguali = controlUguali +1 End If Next arrayOrdinato(puntatore+controlUguali) = valoreDaControllare End If Next ordinaArrayAlfaNumerico = arrayOrdinato End Function


Rispondi quotando
