XL2000: Как с помощью макроса Visual Basic для сортировки массивов в Excel

Переводы статьи Переводы статьи
Код статьи: 213818 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Аннотация

В Microsoft Excel 2000 не существует прямого способа сортировки массива значения с помощью Microsoft Visual Basic для приложений макроса или процедуры. В данной статье рассматриваются две различные алгоритмы, которые можно использовать для сортировки массивы: Сортировка выделенного фрагмента и Пузырьковой сортировки.

Дополнительная информация

Корпорация Майкрософт предлагает примеры программного кода только для иллюстрации и гарантии или подразумеваемых, включая, но не ограничиваясь ими, подразумеваемые гарантии товарности или пригодности для определенной цели. В данной статье предполагается, что вы знакомы с языком программирования рассчитаны и средства, используемые для создания и отладки. Специалисты службы технической поддержки Майкрософт могут пояснить конкретной процедуры, но они будут изменять примеры для реализации дополнительных возможностей или удовлетворения конкретных потребностей.
Имеют ограниченный опыт программирования, необходимо обратиться к сертифицированному партнеру корпорации Майкрософт или консультационной службы корпорации Майкрософт. Для получения дополнительных сведений посетите следующие веб-узлы корпорации Майкрософт:

Корпорация Майкрософт партнерах-https://partner.microsoft.com/rus/partner?countrycode=ru-ru

Служба Майкрософт- http://support.Microsoft.com/gp/advisoryservice

Для получения дополнительных сведений о вариантах поддержки, доступных и обратитесь в корпорацию Майкрософт посетите следующий веб-узел корпорации Майкрософт:http://support.Microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

Метод 1: Выбор сортировки

Выбор сортировки среди проще программировать для сортировки, однако стремится на больших массивов данных работают медленнее, чем пузырьковой сортировки.

Осуществлять выбор рода от 1 до n число элементов массива, найдите самого большого элемента от 1 до n. Если это не n элементов, обмениваются самого большого элемента с n элементов. Затем найдите самого большого элемента от 1 до n-1 и если это не является элементом n-1, обмениваться самого большого элемента элемент n-1. Затем возьмите самого большого элемента от 1 до n-2 и, если это не является элементом n-2, обмениваться самого большого элемента с элементом n-2 и т. д.

Ниже приведен пример сортировки выделенную область с помощью Visual Basic вариантный тип массива.
  1. Введите или вставьте следующий в окне модуля. Базовый вариант 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. Для запуска макроса, нажмите кнопку Сервис Выберите пункт Макрос, а затем нажмите кнопку Макросы.
  3. Выберите макрос SelectionSortMyArray и нажмите кнопку Запустить.

Способ 2: Пузырьковой сортировки

Пузырьковой сортировки сложнее программировать, чем Сортировка выделенного фрагмента, но она обычно работают быстрее и эффективнее с больших массивов данных.

Выполнять пузырьковой сортировки, оценка от 1 до n-1 элементов в массиве, куда вы сравнение каждого элемента с одной после него (другими словами, по сравнению с элемент 1 элемент 2, по сравнению с элемент 2 элемент 3 и т. д.). Если элемент больше, чем элемент после него, происходит обмен этих двух элементов. Продолжайте этот процесс, пока не останется не больше обменов элементов. Ниже приведен пример пузырьковой сортировки с помощью Visual Basic вариантный тип массива.
  1. Введите или вставьте следующий код в окне модуля. Базовый вариант 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. Для запуска макроса, нажмите кнопку Сервис Выберите пункт Макрос, а затем нажмите кнопку Макросы.
  3. Выберите макрос SelectionSortMyArray и нажмите кнопку Запустить.
ПРИМЕЧАНИЕ: Оба эти примеры сортировки по возрастанию. Для выполнения Изменение выбора сортировки в убывающем порядке ">" в "<" in="" the="" following="" line="" of=""></"> SelectionSort функции:
If TempArray(j) > MaxVal Then
				
Для выполнения пузырьковой сортировки по убыванию, изменение ">" в "<" in="" the="" following="" line="" of=""></"> BubbleSort функции:
If TempArray(i) > TempArray(i + 1) Then
				

Свойства

Код статьи: 213818 - Последний отзыв: 19 сентября 2011 г. - Revision: 5.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Excel 2000 Standard Edition
Ключевые слова: 
kbdtacode kbhowto kbinfo kbprogramming kbmt KB213818 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:213818

Отправить отзыв

 

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