配列のソート : Excel(エクセル)

シェルソートを行います。

Excel Tipsメニューに戻る

スポンサーリンク





Excel VBA コード

Option Explicit

'Excel VBAで配列のソート
Private Sub ExSort(sary() As String)
    Dim i As Long
    Dim j As Long
    Dim h As Long
    Dim temp As String


    '交換処理の間隔を決める
    h = LBound(sary())
    For i = 1 To UBound(sary()) - 1
         h = h * 3 + 1
    Next

    Do
        h = h / 3
        For i = h + LBound(sary()) To UBound(sary())
            temp = sary(i)
            j = i
            '交換
            Do While sary(j - h) > temp
                sary(j) = sary(j - h)
                j = j - h
                If j < h Then
                    Exit Do
                End If
            Loop
            sary(j) = temp
        Next
    Loop Until h = LBound(sary())

End Sub
 
Private Sub CommandButton1_Click()
    Dim jyuutaku(4) As String
    Dim i As Integer
    
    jyuutaku(0) = "3:床"
    jyuutaku(1) = "1:天井"
    jyuutaku(2) = "4:玄関"
    jyuutaku(3) = "2:窓"
    jyuutaku(4) = "5:水まわり"
    'ソート前の表示
    For i = 0 To UBound(jyuutaku)
        Cells(7 + i, 2) = jyuutaku(i)
    Next
        
    ExSort jyuutaku
    
    'ソート結果の表示
    For i = 0 To UBound(jyuutaku)
        Cells(7 + i, 4) = jyuutaku(i)
    Next
End Sub

スポンサーリンク





Excel実行結果

■B列がソート前、D列がソート結果です。

スポンサーリンク






Excel Tipsメニューに戻る

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved