XL2000: Excel에서 정렬 배열 VBA 매크로 사용 방법

기술 자료 번역 기술 자료 번역
기술 자료: 213818 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

요약

Microsoft Excel 2000에서 사용하는 Microsoft VBA 매크로를 또는 프로시저 값의 배열 정렬 직접적인 방법이 없습니다. 이 문서에서는 배열을 정렬하는 데 사용할 수 두 개의 서로 다른 알고리즘을 설명합니다: 선택 정렬거품형 정렬.

추가 정보

Microsoft을 배제하며 제한되지 않은 묵시적된 보증 (상품성 및 특정 목적에의 적합성에 대한 묵시적인, 목적으로만 프로그래밍 예제를 제공합니다. 이 문서에서는 프로시저를 작성하고 디버깅하는 데 사용되는 도구 및 여기서 설명하는 프로그래밍 언어에 익숙한 사용자를 대상으로 합니다. Microsoft 기술 지원 담당자는 특정 절차에 대한 기능을 설명할 수 있지만 추가 기능을 제공하거나 특정 요구 사항에 맞도록 프로시저를 구성하지는 이 예제를 수정하지 않습니다.
프로그래밍 경험이 제한되어 있으면 Microsoft 인증 파트너 문의하거나 Microsoft 자문 서비스 할 수 있습니다. 자세한 내용은 다음 Microsoft 웹 사이트를 방문하십시오.

인증된 Microsoft 파트너 - https://partner.microsoft.com/global/30000104

Microsoft 권고 서비스 - http://support.microsoft.com/gp/advisoryservice

사용할 수 있는 지원 옵션 및 Microsoft 연락하는 방법에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 방문하십시오: http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

방법 1: 선택 정렬

선택 정렬 중 보다 쉽게 프로그래밍할 수 있는 정렬 간에 있습니다 있지만 데이터 큰 배열을 거품 정렬 것보다 더 느리게 실행될 경향이 있습니다.

수행할 수 있는 선택 종류의 가진 배열의 요소 수는 n 1 사이의 수 1 n 큰 요소를 찾습니다. 이러한 요소를 n 아니면 가장 큰 요소와를 요소 n 교환하십시오. 그런 다음 1의 최대 요소 n - 1 찾아 이 요소를 n-1 인 경우 가장 큰 요소가 n-1 요소와 교환할. 다음에는 1의 최대 요소 n - 2 찾아, 이러한 요소를 n-2 아니면 요소 n-2, 가장 큰 요소와 교환할 등을.

다음 VBA Variant 형식 배열의 함께 선택 정렬 예입니다.
  1. 입력 또는 모듈 시트에 다음 붙여넣기: 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. 매크로를 실행하려면 도구 메뉴에서 매크로 를 가리킨 다음 매크로 클릭하십시오.
  3. SelectionSortMyArray 매크로를 선택하고 실행 을 클릭하십시오.

방법 2: 거품 정렬

거품 정렬 더 어렵게 선택 정렬 것보다 프로그래밍할 수 있지만 더 빠르고 효율적으로 더 큰 배열을 데이터 실행할 경향이.

거품 정렬 수행하려면 n-1 요소 배열의 각 요소는 한 후 이를 사용하여 비교할 1로 평가 (즉, 요소 2 1 요소에 비해, 요소 2 3, 요소 등을 위해 비교됩니다). 이러한 두 요소는 요소 뒤에 요소를 보다 크면 교환됩니다. 요소 없음 자세한 교환을 때까지 이 과정을 계속하십시오. 다음 VBA Variant 형식 배열의 함께 거품 정렬 예입니다.
  1. 입력 또는 모듈 시트에 다음 코드를 붙여: 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. 매크로를 실행하려면 도구 메뉴에서 매크로 를 가리킨 다음 매크로 클릭하십시오.
  3. SelectionSortMyArray 매크로를 선택하고 실행 을 클릭하십시오.
참고: 이러한 예제 중 모두 오름차순으로 정렬합니다. 내림차순으로 선택 정렬 수행하려면 변경 ">"를 "<" 다음 줄에 있는SelectionSort 함수:
If TempArray(j) > MaxVal Then
				
내림차순으로 거품 정렬 수행하려면 변경 ">" 수 있는 "<" 다음 줄에 있는BubbleSort 함수:
If TempArray(i) > TempArray(i + 1) Then
				

속성

기술 자료: 213818 - 마지막 검토: 2006년 11월 23일 목요일 - 수정: 3.5
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Excel 2000 Standard Edition
키워드:?
kbmt kbdtacode kbhowto kbinfo kbprogramming KB213818 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

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