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

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もあるため、結果として数字と文字列が混在することを防ぐためにアンダーバーで強制的に文字列にしています。

コメントをどうぞ

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

  • ▼お小遣い稼ぎしませんか?▼ 日々の生活にhappyをプラスする|ハピタス

    クレジットカード・FX口座を作るだけで簡単に3万円GETです。一切支出はありません。

INDEX COUNTIF 条件付き書式 MATCH 目標 無料 VLOOKUP 印刷 バーコード HLOOKUP グラフ コピペ COLUMN DATE 作業効率UP フロー図 XLSTART SUM ユーザー定義関数 置換 変換 SUMIFS テンプレート ワイルドカード 検索 図形 TODAY SUMIF NA() 日付
  • 関西在住の30代サラリーマン。事務職で毎日Excelと戯れています。
    システム導入なんて資金が無い!Excelでなんとかやりたい零細中小の社長さん・事務員さんの力になればと思います。
    詳しいプロフィール


PAGE TOP ↑