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

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:213818
Эта статья помещена в архив. Она предлагается "как есть" и обновляться не будет.
Аннотация
В 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 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. Для запуска макроса, нажмите кнопку Сервис Выберите пункт Макрос, а затем нажмите кнопку Макросы.
  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 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. Для запуска макроса, нажмите кнопку Сервис Выберите пункт Макрос, а затем нажмите кнопку Макросы.
  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				
XL2000

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 213818 — последний просмотр: 12/05/2015 12:20:31 — редакция: 5.0

Microsoft Excel 2000 Standard Edition

  • kbnosurvey kbarchive kbdtacode kbhowto kbinfo kbprogramming kbmt KB213818 KbMtru
Отзывы и предложения