エクセル術

数字→英字→ひらがな→漢字→カタカナで並び替える

Excelの並び替え機能で、文字列を昇順並び替えをすると通常は「数字→英字→カタカナ→ひらがな→漢字」となりますが、カタカナを最後にしたい場合のユーザー定義関数です。

Unicodeでのコード順が半角数字→半角英字→ひらがな→漢字→半角カタカナであることを利用しています。

コード

Function SortIndex(ByVal src As String) As String

    Dim i As Long
    
    SortIndex = "_"
    If src = "" Then SortIndex = "x": Exit Function
    For i = 1 To Len(src)
        SortIndex = SortIndex & Right$("000" & Hex$(AscW(StrConv(Mid$(src, i, 1), vbNarrow))), 4)
    Next i

End Function

使い方

上記のコードを標準モジュールに貼り付けます。

参考:ユーザー定義関数の設定方法

並べ替えたい表の最終列にでもソート用の項目を作ります。例ではB列にソート用項目を作りました。

そこに =SortIndex(A2) というように上記のコードで作られた関数をB列のセルに入力します。

SortIndex関数を入れる

そうすると結果がこのように表示されます。↓

結果

これはUnicodeを1文字ずつ抽出した結果です。

そしてこのB列で昇順並べ替えすれば「数字→英字→ひらがな→漢字→カタカナ」での並べ替えが可能です。

コードの説明

これも単純なコードなので説明するほどではありませんが、最初に述べたようにUnicodeが「数字→英字→ひらがな→漢字→カタカナ」であることを利用して、一文字ずつUnicodeを抽出しています。

頭に_(アンダーバー)を入れているのは数字のみのUnicodeもあるため、結果として数字と文字列が混在することを防ぐためにアンダーバーで強制的に文字列にしています。

モバイルバージョンを終了