質問番号: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