XL2000: Como utilizar uma macro do Visual Basic para classificar matrizes no Excel

Traduções deste artigo Traduções deste artigo
ID do artigo: 213818 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

No Microsoft Excel 2000, não há nenhum método direto para classificar uma matriz de valores com um Microsoft Visual Basic for Applications macro ou procedimento. Este artigo descreve dois algoritmos diferentes que você pode usar para classificar matrizes: Seleção Classificar e a Classificação de bolha .

Mais Informações

Microsoft fornece exemplos de programação apenas para ilustração, sem garantia expressa ou implícita, incluindo, mas não se limitando às garantias implícitas de comercialização e/ou adequação a uma finalidade específica. Este artigo presume que você esteja familiarizado com a linguagem de programação demonstrada e as ferramentas usadas para criar e depurar procedimentos. Profissionais de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas eles não modificarão esses exemplos para fornecer funcionalidades adicionais ou construir procedimentos para atender às suas necessidades específicas.
Se você não tenha muita experiência de programação, talvez queira em contato com um Microsoft Certified Partner ou Microsoft Advisory Services. Para obter mais informações, visite da Microsoft:

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

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

Para obter mais informações sobre as opções de suporte estão disponíveis e sobre como entrar em contato com a Microsoft, visite o seguinte site: http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

Método 1: Classificar de seleção

Embora seja uma classificação de seleção entre o mais fácil de tipos de programa, ele tende a executar mais lentamente do que classificar bolhas em matrizes grandes de dados.

Para executar uma seleção de uma matriz com entre 1 n número de elementos, localize o elemento maior de 1 a n. Se este não é elemento n, troca o elemento maior com n de elemento. Em seguida, localize o elemento maior de 1 para o n-1 e, se este não é elemento n-1, trocar o elemento maior com elemento n-1. Em seguida, localize o elemento maior de 1 para o n-2 e, se este não é elemento n-2, o maior elemento com o elemento n-2 do exchange e assim por diante.

A seguir é um exemplo de uma classificação de seleção com uma matriz do tipo de variante do Visual Basic.
  1. Digite ou cole o seguinte em uma folha de módulo: 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. Para executar a macro, clique no menu Ferramentas , aponte para macro e, em seguida, clique em macros .
  3. Selecione a macro SelectionSortMyArray e, em seguida, clique em Executar .

Método 2: Classificação de bolha

Uma classificação de bolha é mais difícil de classificar a seleção do programa, mas ele tende a executar mais rápido e eficiente com maiores matrizes de dados.

Para executar uma classificação de bolha, avaliar 1 para n-1 elementos da matriz em que você compare cada elemento com o depois (em outras palavras, o elemento 1 é comparado ao elemento 2, elemento 2 é comparado com elemento 3 e assim por diante). Se um elemento for maior que o elemento depois dela, esses dois elementos são trocados. Continue esse processo até que haja não mais trocas de elementos. A seguir é um exemplo de uma classificação de bolha com uma matriz do tipo de variante do Visual Basic.
  1. Digite ou cole o código a seguir em uma folha de módulo: 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. Para executar a macro, clique no menu Ferramentas , aponte para macro e, em seguida, clique em macros .
  3. Selecione a macro SelectionSortMyArray e, em seguida, clique em Executar .
Observação : ambos esses exemplos classificar em ordem crescente. Para executar uma seleção Classificar em ordem decrescente, alterar ">"para"<" na seguinte linha dafunção SelectionSort :
If TempArray(j) > MaxVal Then
				
para executar uma classificação de bolha em ordem decrescente, alterar ">" para um "<" na seguinte linha dafunção BubbleSort :
If TempArray(i) > TempArray(i + 1) Then
				

Propriedades

ID do artigo: 213818 - Última revisão: quinta-feira, 23 de novembro de 2006 - Revisão: 3.5
A informação contida neste artigo aplica-se a:
  • Microsoft Excel 2000 Standard Edition
Palavras-chave: 
kbmt kbdtacode kbhowto kbinfo kbprogramming KB213818 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 213818

Submeter comentários

 

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