Excel

テキストデータの必要な個所だけ抜き出して並べ替える

2021-05-26

欲しい情報のみに加工する例です。

データ加工例

左が加工前で、右が加工後です。

データ加工

各店舗ごとに、1行の空白で区切られています。

欲しいデータは、1行目と2行目で横並びにし、店舗名で並べ替えたい。

サンプルコード

For~Nextステートメントの例です。

Sub sample()
    Dim kStr As String
    Dim i As Long
    Dim lRow As Long
    Const cSort As String = "青森店,群馬店,静岡店,鹿児島店"
    
    lRow = Cells(Rows.Count, 2).End(xlUp).Row
    
    For i = 2 To lRow
        kStr = Cells(i, 2)
        If kStr Like "[[]*" Then
            Cells(i, 1) = Cells(i - 1, 2)
            Cells(i - 1, 1) = "消"
        Else
            Cells(i, 1) = "消"
        End If
    Next i
    
    Range("A1").AutoFilter 1, "消"
    With Range("A1").CurrentRegion.Offset(1, 0)
        .Resize(.Rows.Count - 1).EntireRow.Delete
    End With
    
    Range("A1").AutoFilter
    
    With ActiveSheet.Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("A1"), CustomOrder:=cSort
        .SetRange Range("A1").CurrentRegion
        .Header = xlYes
        .Apply
    End With
    
End Sub

使い方

加工したいデータをセルB2以降に貼り付け、マクロを実行します。

実行前

説明は後日追記予定です。

-Excel
-

© 2021 オフィスのQ&A