Excel VBA で型番の分類番号を抽出して並べ替える方法【サンプルコード付き】

目次

概要

セルの先頭に記載された型番から「大分類番号」と「小分類番号」を切り出し、補助列に出力したうえで並べ替えを行うマクロをご紹介いたします。型番の書式が「PC123-04: 製品名」のように「英字 + 数字 + ‘-’ + 枝番」で統一されている場合、本マクロを利用すると分類順に整然とソートできます。


前提条件

項目内容
対応 ExcelMicrosoft 365 または 2016 以降
データ範囲列 A に型番を含む文字列が A2:A11 に配置されている想定
マクロ設置先標準モジュール

サンプルコード

Sub SortByProductCode()

    Dim srcCell   As Range            ' ループ用セル
    Dim workRng   As Range            ' 表全体の範囲
    Dim codePart  As String           ' 型番部分
    Dim ws        As Worksheet        ' 対象シート
    
    Set ws = ActiveSheet
    Set workRng = ws.Range("A2").CurrentRegion   ' 見出し行を含む範囲を自動取得
    
    '--- 補助列のヘッダーを設定(列 B: 大分類、列 C: 小分類)---
    ws.Range("B1:C1").Value = Array("MajorNo", "MinorNo")
    
    '--- 型番から分類番号を抽出し補助列へ書き込み ---
    For Each srcCell In workRng.Columns(1).Cells
        If srcCell.Row > workRng.Row Then          ' 見出し行を除外
            codePart = Split(srcCell.Value, ":")(0)         ' 「:」より前を抽出
            srcCell.Offset(0, 1).Value = Val(Split(codePart, "P")(1))    ' P の後の数字を大分類に
            srcCell.Offset(0, 2).Value = Val(Split(codePart, "-")(1))    ' 「-」の後の数字を小分類に
        End If
    Next srcCell
    
    '--- 大分類 → 小分類 → 型番 の順に昇順ソート ---
    With workRng
        .Sort Key1:=.Columns(2), Order1:=xlAscending, _
              Key2:=.Columns(3), Order2:=xlAscending, _
              Key3:=.Columns(1), Order3:=xlAscending, _
              Header:=xlYes
    End With

End Sub

コードのポイント

説明
10CurrentRegion で表全体を取得し、列追加後も範囲が自動拡張されます。
17Split(srcCell.Value, ":")(0) により「:」より前の型番部分のみを取得します。
18Val(Split(codePart, "P")(1)) で P の後ろに続く連続数字を大分類番号として取得します。
19Val(Split(codePart, "-")(1)) でハイフンの後ろに続く数字を小分類番号として取得します。
24Sort メソッドで補助列を優先キーに設定し、整然とした並べ替えを実行しています。

応用例

目的実装のヒント
降順で並べ替えたいOrder1:=xlDescending のように順序を切り替えます。
枝番が二桁固定でない場合Val 関数を利用しているため桁数が異なっても正しく数値化されます。
補助列を非表示にしたいソート後に ws.Columns("B:C").Hidden = True を追加します。

よくある質問

質問回答
型番の先頭文字が複数種類ある場合はどう対応しますか。Split(codePart, "P")(1) の部分を Mid や正規表現に置き換え、任意のパターンに合わせて抽出すると柔軟に対応できます。
データ行が追加されるたびに自動でソートする方法はありますか。Worksheet_Change イベントに本マクロを呼び出すコードを記述すると、入力後に自動で並べ替えが実行されます。

まとめ

行頭の型番から分類番号を抽出し、補助列を用いて並べ替えることで、大量データでも規則正しく整理できます。まずはサンプルコードを実行し、期待どおりに分類・ソートされることをご確認ください。データ構成に合わせて抽出ロジックやキー順序を調整すれば、業務で扱う多様な型番にも対応可能です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次