ある表を決められたルールで並び替え ② 正規表現で並び替えキーを書き出し

昨日の「並び替えに関する課題」について、少しずつ進めていく。
infoment.hatenablog.com

昨日のおさらい。並び替えのキーとなる部分は、先頭のアルファベットではなく、その後に続く空白行のさらにあと、連続する3つのアルファベットである。
↓ の例であれば、「AAA」等がそれにあたる。
f:id:Infoment:20200216220910p:plain

そこでまず、並び替えのキーとなる情報を正規表現で取得して、別の列に書き出すことにした。

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列に並び替え用のキーを書き出すことが出来た。
f:id:Infoment:20200217224443p:plain

次回はこの情報を、並び替えに使える形に変換してみる。

明日に続きます。
参考まで。