ある表を決められたルールで並び替え ② 正規表現で並び替えキーを書き出し
昨日の「並び替えに関する課題」について、少しずつ進めていく。
infoment.hatenablog.com
昨日のおさらい。並び替えのキーとなる部分は、先頭のアルファベットではなく、その後に続く空白行のさらにあと、連続する3つのアルファベットである。
↓ の例であれば、「AAA」等がそれにあたる。
そこでまず、並び替えのキーとなる情報を正規表現で取得して、別の列に書き出すことにした。
Sub 並べ替え() ' 元データ保護のため、シートごとコピーして並べ替え。 Dim Sh(1) As Worksheet ActiveSheet.Copy After:=ActiveSheet Set Sh(0) = ActiveSheet Sh(0).Name = "並べ替え後" ' 正規表現。 Dim myReg As Object Set myReg = CreateObject("VBScript.RegExp") ' パターン定義。 ' 一文字以上の英字のあとに、一回以上連続してスペースが続く。 ' その後に英字が3文字続き、ピリオドののち、商品名となる。 ' 今回必要なのは、英字が3文字続く部分。 myReg.Pattern = "^[A-Z]+\s+([A-Z]{3})\..*$" ' A列をループで確認。キーとなるコードをE列に書き出す。 Dim MC As Object ' MatchCollection Dim r As Range For Each r In Range("A2:A6") If myReg.Test(r) Then Set MC = myReg.Execute(r) Cells(r.Row, "E") = MC(0).SubMatches(0) End If Next End Sub
結果、E列に並び替え用のキーを書き出すことが出来た。
次回はこの情報を、並び替えに使える形に変換してみる。
明日に続きます。
参考まで。