XL2000: Come utilizzare una macro di Visual Basic per l'ordinamento matrici in Excel

Traduzione articoli Traduzione articoli
Identificativo articolo: 213818 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In Microsoft Excel 2000, non esiste un diretto metodo per l'ordinamento di una matrice di valori con Microsoft Visual Basic per Applications macro o routine. In questo articolo viene descritto due algoritmi differenti che Ŕ possibile utilizzare per ordinare le matrici: dell' Ordinamento di selezione e l' Ordinamento a bolle .

Informazioni

Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia di qualsiasi tipo, sia espressa che implicita, ivi incluse, senza limitazioni, le garanzie implicite di commerciabilitÓ o idoneitÓ per uno scopo particolare. In questo articolo si presume che l'utente conosca il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire il debug delle procedure. Gli addetti al Supporto Microsoft possono spiegare la funzionalitÓ di una particolare procedura, ma non possono modificare questi esempi per fornire ulteriori funzionalitÓ o realizzare procedure per soddisfare esigenze specifiche.
Se si dispone di esperienza di programmazione limitata, Ŕ possibile che desideri contattare un Microsoft Certified Partner o servizi di consulenza Microsoft. Per ulteriori informazioni, visitare questi siti Web di Microsoft:

Microsoft Certified Partner - https://partner.microsoft.com/global/30000104

Microsoft Advisory Services - http://support.microsoft.com/gp/advisoryservice

Per ulteriori informazioni sulle opzioni di supporto disponibili e su come contattare Microsoft, visitare il seguente sito: http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

Metodo 1: Ordinamento di selezione

Anche se un ordinamento di selezione Ŕ tra il pi¨ semplice di tipi per il programma, tende a eseguire pi¨ lentamente rispetto dell'ordinamento a bolle in matrici di grandi dimensioni di dati.

Per eseguire una selezione ordinamento di una matrice con tra 1 e n numero di elementi, individuare l'elemento pi¨ grande, da 1, a n. Se non si tratta di elemento n, l'elemento pi¨ grande con elemento n di exchange. Quindi individuare l'elemento pi¨ grande da 1 a n-1 e, se non Ŕ elemento n-1, l'elemento pi¨ grande con elemento n-1 di exchange. Successivamente, individuare l'elemento pi¨ grande da 1 a n-2 e, se non si tratta di elemento n-2, l'elemento pi¨ grande con elemento n-2 di exchange e cosý via.

Di seguito Ŕ un esempio di un ordinamento di selezione con una matrice di tipo Variant di Visual Basic.
  1. Digitare o incollare il seguente in un foglio modulo: Option Base 1
    Function SelectionSort(TempArray As Variant)
        Dim MaxVal As Variant
        Dim MaxIndex As Integer
        Dim i, j As Integer
    
        ' Step through the elements in the array starting with the
        ' last element in the array.
        For i = UBound(TempArray) To 1 Step -1
    
            ' Set MaxVal to the element in the array and save the
            ' index of this element as MaxIndex.
            MaxVal = TempArray(i)
            MaxIndex = i
    
            ' Loop through the remaining elements to see if any is
            ' larger than MaxVal. If it is then set this element
            ' to be the new MaxVal.
            For j = 1 To i
                If TempArray(j) > MaxVal Then
                    MaxVal = TempArray(j)
                    MaxIndex = j
                End If
            Next j
    
            ' If the index of the largest element is not i, then
            ' exchange this element with element i.
            If MaxIndex < i Then
                TempArray(MaxIndex) = TempArray(i)
                TempArray(i) = MaxVal
            End If
        Next i
    
    End Function
    
    Sub SelectionSortMyArray()
        Dim TheArray As Variant
    
        ' Create the array.
        TheArray = Array(15, 8, 11, 7, 33, 4, 46, 19, 20, 27, 43, 25, 36)
    
        ' Sort the Array and display the values in order.
        SelectionSort TheArray
        For i = 1 To UBound(TheArray)
            MsgBox TheArray(i)
        Next i
    
    End Sub
    					
  2. Per eseguire la macro, fare clic sul menu Strumenti , scegliere macro e quindi fare clic su macro .
  3. Selezionare la macro SelectionSortMyArray e quindi fare clic su Esegui .

Metodo 2: Bubble Sort

Un ordinamento a bolle Ŕ pi¨ difficile programmare rispetto dell'ordinamento della selezione, ma tende a eseguire pi¨ veloce ed efficiente con matrici di dimensioni maggiori di dati.

Per eseguire un ordinamento a bolle, valutare 1 a n-1 elementi nella matrice in cui Ŕ possibile confrontare ogni elemento con quello dopo di esso (in altre parole, l'elemento 1 viene confrontato con l'elemento 2, elemento 2 viene confrontato con l'elemento 3 e cosý via). Se un elemento Ŕ pi¨ esteso dell'elemento dopo di esso, vengono scambiati i due elementi. Continuare questo processo finchÚ non sono non disponibili pi¨ scambi di elementi. Di seguito Ŕ un esempio di un ordinamento a bolle con una matrice di tipo Variant di Visual Basic.
  1. Digitare o incollare il codice riportato di seguito nella finestra di un foglio di modulo: Option Base 1
    Function BubbleSort(TempArray As Variant)
        Dim Temp As Variant
        Dim i As Integer
        Dim NoExchanges As Integer
    
        ' Loop until no more "exchanges" are made.
        Do
            NoExchanges = True
    
            ' Loop through each element in the array.
            For i = 1 To UBound(TempArray) - 1
    
                ' If the element is greater than the element
                ' following it, exchange the two elements.
                If TempArray(i) > TempArray(i + 1) Then
                    NoExchanges = False
                    Temp = TempArray(i)
                    TempArray(i) = TempArray(i + 1)
                    TempArray(i + 1) = Temp
                End If
            Next i
        Loop While Not (NoExchanges)
    
    End Function
    
    Sub BubbleSortMyArray()
        Dim TheArray As Variant
    
        ' Create the array.
        TheArray = Array(15, 8, 11, 7, 33, 4, 46, 19, 20, 27, 43, 25, 36)
    
        ' Sort the Array and display the values in order.
        BubbleSort TheArray
        For i = 1 To UBound(TheArray)
            MsgBox TheArray(i)
        Next i
    End Sub
    					
  2. Per eseguire la macro, fare clic sul menu Strumenti , scegliere macro e quindi fare clic su macro .
  3. Selezionare la macro SelectionSortMyArray e quindi fare clic su Esegui .
Nota : entrambi questi esempi ordinare in ordine crescente. Per eseguire un ordinamento di selezione in ordine decrescente, modificare ">"a"<" nella seguente riga delfunzione SelectionSort :
If TempArray(j) > MaxVal Then
				
per eseguire un ordinamento a bolle in ordine decrescente, modificare ">" per un "<" nella seguente riga delfunzione BubbleSort :
If TempArray(i) > TempArray(i + 1) Then
				

ProprietÓ

Identificativo articolo: 213818 - Ultima modifica: giovedý 23 novembre 2006 - Revisione: 3.5
Le informazioni in questo articolo si applicano a:
  • Microsoft Excel 2000 Standard Edition
Chiavi:á
kbmt kbdtacode kbhowto kbinfo kbprogramming KB213818 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 213818
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com