Xl 2000: Excel で配列をソートする Visual Basic マクロを使用する方法

文書翻訳 文書翻訳
文書番号: 213818
すべて展開する | すべて折りたたむ

目次

概要

Microsoft Excel 2000 では、配列の並べ替えを直接の方法はありません。値には、Microsoft Visual Basic for Applications マクロまたはプロシージャです。ここでは、並べ替えに使用できる 2 つの異なるアルゴリズムについて説明します。配列: 選択範囲の並べ替え および バブル ソート.

詳細

マイクロソフトは、明示または黙示、いかなる保証も、市場性および特定目的への適合性の黙示的な保証に限らず、だけのプログラミング例を提供します。この資料は、例示されているプログラミング言語と作成し、プロシージャをデバッグするために使用するツールに精通するいると仮定します。Microsoft support 担当者は、特定のプロシージャの機能について説明することができますが、機能の追加またはお客様固有のニーズを満たすようにプロシージャを作成するのには、次の例は変更されません。
プログラミングが制限されている場合は、マイクロソフト認定パートナー、あるいはマイクロソフト アドバイザリー サービスにお問い合わせくださいする可能性があります。詳細については、次のマイクロソフト Web サイトを参照してください。

マイクロソフト認定パートナーhttps://partner.microsoft.com/global/30000104

マイクロソフト アドバイザリー サービス 〜 http://support.microsoft.com/gp/advisoryservice

利用可能なサポート オプションおよびマイクロソフトへの問い合わせ方法の詳細については、次のマイクロソフト Web サイトを参照してください。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. 入力するか、モジュール シートに、次を貼り付けます。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 の評価は、各要素には、比較 (つまり、要素 1 要素 2 と比較した、2 の要素は、要素 3 というようにいると比較)。要素と要素よりも大きい場合、これら 2 つの要素が交換されます。ない複数交換の要素になるまでこの手順を繰り返します。Visual Basic バリアント型配列を持つ、バブル ソートの例を次に示します。
  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 マクロを選択しをクリックしてください 実行.
メモ: 両方のこれらの例は昇順で並べ替えます。実行するのには選択範囲の並べ替えを降順に変更する">"を"<" in="" the="" following="" line="" of=""></"> SelectionSort 関数:
If TempArray(j) > MaxVal Then
				
降順で、バブル ソートを実行するには、変更">"には"<" in="" the="" following="" line="" of=""></"> バブル ソート 関数:
If TempArray(i) > TempArray(i + 1) Then
				

プロパティ

文書番号: 213818 - 最終更新日: 2011年7月21日 - リビジョン: 5.0
キーワード:?
kbhowto kbinfo kbprogramming kbdtacode kbmt KB213818 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:213818
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

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