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

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB: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 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: バブル ソート

バブル ソートは、選択範囲の並べ替えよりも、プログラムはより困難ですが、データの大きな配列をより速くより効率的を実行する傾向があります。

バブル ソートを実行するには、配列内の要素の 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 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=""></"> バブル ソート 関数:
If TempArray(i) > TempArray(i + 1) Then				
[XL2000]

警告: この記事は自動翻訳されています

プロパティ

文書番号:213818 - 最終更新日: 12/05/2015 12:20:28 - リビジョン: 5.0

  • kbnosurvey kbarchive kbhowto kbinfo kbprogramming kbdtacode kbmt KB213818 KbMtja
フィードバック