質問番号:1446515298

2〜4つの文字数バラバラの単語で構成される文字列を並べ替える方法につきまして

今、A列に次のような文字列が10000行近く、ずらりと並んでおります。

単語A★単語B★単語C■
単語D★単語E★単語F★単語G■
単語H★単語I■
単語J★単語K★単語L■
単語M★単語N■
単語O★単語P★単語Q★単語R■


1つのセルは2〜4つの単語の文字列が入っております。
それぞれの単語自体はバラバラで特に規則性はないです。
単語と単語の間に★印があり、最後の単語の後ろには■がくっ付いております。
上記の状態から、

単語C■単語A★単語B★
単語G■単語D★単語E★単語F★
単語I■単語H★
単語L■単語J★単語K★
単語N■単語M★
単語R■単語O★単語P★単語Q★


と、並べ替えを行いたいのです。
量が多くて困っているのですが・・・何かよい並べ替えのマクロや関数等ありましたら、
お教えいただけないでしょうか。

よろしくお願い致します。

2015.11.05追記 回答プログラムは実行したいシートに貼り付けてください。

回答

Option Explicit

Sub StringExchange()

    Dim MAXROW As Long
    Dim SPCount As Integer
    Dim lp As Long
    Const SPChar As String = "★"

    MAXROW = Me.Range("A" & Rows.Count).End(xlUp).Row
        
    ' 0行の場合は即終了
    If MAXROW < 1 Then
       Exit Sub
    End If
              
    For lp = 1 To MAXROW

        If Len(Cells(lp, 1)) > 0 Then
        
           ' 文字列後ろから★を探す
            SPCount = InStrRev(Cells(lp, 1), SPChar)
            If SPCount > 0 Then
                Cells(lp, 2) = Mid(Cells(lp, 1), SPCount + 1, Len(Cells(lp, 1))) & Left(Cells(lp, 1), SPCount)
            Else
                Cells(lp, 2) = Cells(lp, 1)
            End If
        End If
    Next lp

End Sub

出力結果