数字→英字→ひらがな→漢字→カタカナで並び替える
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列のセルに入力します。
そうすると結果がこのように表示されます。↓
これはUnicodeを1文字ずつ抽出した結果です。
そしてこのB列で昇順並べ替えすれば「数字→英字→ひらがな→漢字→カタカナ」での並べ替えが可能です。
コードの説明
これも単純なコードなので説明するほどではありませんが、最初に述べたようにUnicodeが「数字→英字→ひらがな→漢字→カタカナ」であることを利用して、一文字ずつUnicodeを抽出しています。
頭に_(アンダーバー)を入れているのは数字のみのUnicodeもあるため、結果として数字と文字列が混在することを防ぐためにアンダーバーで強制的に文字列にしています。
関連記事
- 前の記事
- セルの内容が異なる場合に交互に塗りつぶしたい
- 次の記事
- 区切り位置機能を使わず、関数だけで区切りたい