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

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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 213818
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Sumário
No Microsoft Excel 2000, não existe nenhum método directo para ordenar uma matriz de valores com um Microsoft Visual Basic for Applications macro ou procedimento. Este artigo descreve dois algoritmos diferentes que pode utilizar para ordenar matrizes: Ordenar de selecção e Ordenação de bolhas .
Mais Informação
Microsoft fornece exemplos de programação ilustração só, sem garantia expressa ou implícita, incluindo, sem limitação, garantias implícitas de comercialização e/ou adequação a um fim específico. Este artigo pressupõe que está familiarizado com a linguagem de programação apresentada e as ferramentas utilizadas para criar e depurar procedimentos. Profissionais de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às necessidades específicas.
Se dispõe de limitada experiência de programação, poderá contactar um Microsoft Certified Partner ou a serviços de aviso. Para obter mais informações, visite estes Web sites da Microsoft:

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

Serviços Microsoft aviso - http://support.microsoft.com/gp/advisoryservice

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

Método 1: Selecção de ordenação

Embora seja uma ordenação selecção entre tipos de programas de fácil, tende a executar mais lentamente do que a ordenação de bolhas num grandes matrizes de dados.

Para efectuar uma selecção de ordenação de uma matriz com entre 1 n número de elementos, localize o elemento maior de 1 a n. Se não for n de elemento, troca o elemento maior com n de elemento. Em seguida, localize o elemento maior de 1 para o n-1 e se não for elemento n-1, trocar o elemento maior no elemento n-1. Em seguida, localizar o elemento maior de 1 para 2 n e, se não for elemento n-2, trocar o elemento maior com o elemento n-2 e assim sucessivamente.

Segue-se um exemplo de uma ordenação de selecção com uma matriz de tipo de variante do Visual Basic.
  1. Escreva ou cole o seguinte numa folha de módulo: opção de 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 iEnd FunctionSub 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 iEnd Sub					
  2. Para executar a macro, clique no menu Ferramentas , aponte para macro e, em seguida, clique em macros .
  3. Seleccione a macro SelectionSortMyArray e, em seguida, clique em Executar .

Método 2: Bolha ordenar

Ordenar de bolhas é mais difícil de programa que a ordenação de selecção, mas tem tendência para executar mais rápida e eficientemente com maiores matrizes de dados.

Para efectuar uma ordenação de bolhas, avaliar 1 para n-1 elementos na matriz onde comparar cada elemento com um a seguir (por outras palavras, o elemento 1 é comparado com elemento 2, elemento 2 é comparado com elemento 3 e assim sucessivamente). Se um elemento for maior que o elemento a seguir, os dois elementos são trocados. Continue este processo até não mais trocas de elementos. Segue-se um exemplo de uma ordenação Bolhas com uma matriz de tipo de variante do Visual Basic.
  1. Escreva ou cole o seguinte código na folha de módulo: opção de 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 FunctionSub 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 iEnd Sub					
  2. Para executar a macro, clique no menu Ferramentas , aponte para macro e, em seguida, clique em macros .
  3. Seleccione a macro SelectionSortMyArray e, em seguida, clique em Executar .
Nota : ambos estes exemplos ordenar por ordem ascendente. Para efectuar uma selecção de ordenar por ordem descendente, altere ">"para"<" na linha seguinte dofunção SelectionSort :
If TempArray(j) > MaxVal Then				
para efectuar uma ordenação bolha por ordem descendente, altere ">" para um "<" na seguinte linha dafunção BubbleSort :
If TempArray(i) > TempArray(i + 1) Then				
XL2000

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 213818 - Última Revisão: 12/05/2015 12:20:30 - Revisão: 3.5

Microsoft Excel 2000 Standard Edition

  • kbnosurvey kbarchive kbmt kbdtacode kbhowto kbinfo kbprogramming KB213818 KbMtpt
Comentários