Excel VBA でフリガナを無視して並べ替える方法【SortMethod を活用】

目次

概要

Excel では日本語のフリガナ(ふりがな)情報を基に並べ替えを行うことがございますが、データの用途によってはフリガナを無視して文字列そのものを基準にソートしたい場合があります。VBA の SortMethod プロパティxlStroke を指定すると、フリガナを参照しない並び替えが可能です。本記事では、範囲指定による簡易マクロと Sort オブジェクトを用いた汎用マクロの二通りをご紹介いたします。


前提条件

項目内容
対応 ExcelMicrosoft 365 または 2016 以降
マクロ設置先標準モジュール
データ形式先頭行が見出し行の表

1. 範囲を直接指定してソートする例

Sub SortWithoutFurigana_Range()

    Dim tgt As Range                       ' 並べ替え対象
    Set tgt = Worksheets("Sheet1").Range("B3:E20")   ' 見出し行を含む範囲を指定

    ' B 列を基準に昇順ソート(フリガナ無視)
    tgt.Sort Key1:=tgt.Columns(1), _
             Order1:=xlAscending, _
             Header:=xlYes, _
             SortMethod:=xlStroke

End Sub

ポイント

  • SortMethod:=xlStroke を指定することで、フリガナではなく文字列そのものを基準に並び替えます。
  • Header:=xlYes を指定し、見出し行を維持したままソートを実行しています。

2. Sort オブジェクトを使用した汎用マクロ

Sub SortWithoutFurigana_SortObject()

    Dim rng As Range
    Set rng = ActiveSheet.Range("B3:E20")     ' 見出し行を含む範囲

    With ActiveSheet.Sort
        .SortFields.Clear
        
        ' 例:B 列で昇順ソート
        .SortFields.Add Key:=rng.Columns(1), _
                        SortOn:=xlSortOnValues, _
                        Order:=xlAscending
        
        .SetRange rng
        .Header = xlYes
        .Orientation = xlTopToBottom
        .MatchCase = False
        .SortMethod = xlStroke               ' フリガナを無視
        .Apply
    End With

End Sub

ポイント

  • SortFields に複数列を追加すれば、優先順位を付けた複合ソートも可能です。
  • SortMethod を最後に設定すると、全キーに対してフリガナを無視した並べ替えが適用されます。

応用例

目的実装のヒント
降順で並べ替えたいOrder:=xlDescending を指定します。
英数字のみフリガナ無視にしたい日本語列と英数字列を分け、フリガナを参照したい列には xlPinYin を設定します。
毎回異なる範囲を対象にしたいApplication.InputBox(Type:=8) でユーザーに範囲を選択させると汎用性が高まります。

よくある質問

質問回答
フリガナを参照した並べ替えとの違いは何ですか。xlPinYin(既定値)は読み仮名情報を基に並べ替えます。一方 xlStroke はセル表示文字列の画数順を利用し、フリガナを無視します。
データがテーブル形式の場合でも使えますか。はい。テーブル(ListObject)の範囲を取得して同じ手順でソート可能です。

まとめ

SortMethod:=xlStroke を活用すると、フリガナ情報を無視した並べ替えを VBA で簡単に実装できます。まずはサンプルコードを実行し、意図した順序でデータが並ぶことをご確認ください。複数列ソートや動的範囲指定などを組み合わせることで、より柔軟なデータ整理が実現できます。

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

この記事を書いた人

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

目次