【VBAリファレンス|実務向け】ふりがな順でなく、同じ文字コード順で並べ替える方法

スポンサーリンク

なぜこの設定が重要なのか

Excelで標準的な「並べ替え」を行うと、データは「ふりがな(読み)」を基準に50音順で並びます。しかし、実務の現場では、名簿や商品リストを「読み」ではなく、漢字の「文字コード(Unicode/ASCII)」順に並べ替えたいというケースが多々あります。例えば、システムの出力データと照合する際や、特定の記号や英数字を先頭に寄せたい場合などです。この設定を理解しておかないと、意図しない並び順になり、データの確認作業に膨大な時間がかかってしまいます。

基礎知識:Excelの並べ替えの仕組み

Excelの並べ替え設定には「ふりがなを使う」というオプションがデフォルトで有効になっています。これがオンになっていると、漢字などは「入力時に設定されたふりがな情報」に基づいて並べ替えられます。一方、これをオフにすると、Excelは純粋に「その文字が持っている文字コードの値」で並べ替えを行います。これにより、読みに関係なく、コンピュータが認識する順番(数値→記号→アルファベット→漢字)で一貫した並び順を実現できます。

実装:文字コード順に並べ替える手順

Excelの機能を使って並べ替える手順は以下の通りです。

1. 並べ替えたいデータ範囲を選択します。
2. [データ]タブの「並べ替え」ボタンを押します。
3. 表示されたダイアログボックスの右上にある[オプション]ボタンをクリックします。
4. 「ふりがなを使う」のチェックを外して[OK]を押します。
5. 並べ替えの基準(列)を選択し、[OK]を押して実行します。

サンプルプログラム:VBAで「文字コード順」の並べ替えを自動化する

実務で頻繁に行う作業であれば、マクロ(VBA)で自動化するのが効率的です。以下のコードは、指定した範囲を「ふりがなを無視して」並べ替える例です。

Sub SortByCharCode()
‘ 対象となるシートと範囲を指定
Dim rng As Range
Set rng = ActiveSheet.Range(“A1:B10”) ‘ 並べ替えたい範囲

‘ 並べ替えの定義をクリアして設定
With ActiveSheet.Sort
.SortFields.Clear
‘ 第一キーとしてA列(1列目)を指定し、昇順で並べ替え
.SortFields.Add Key:=rng.Columns(1), SortOn:=xlSortOnValues, Order:=xlAscending
.SetRange rng
.Header = xlYes ‘ 見出しがある場合はxlYes、ない場合はxlNo

‘ 【重要】ここがポイント!MatchCaseはFalse、Orientationは上下方向、
‘ SortMethodを「xlPinYin(ふりがな)」ではなく「xlStroke(文字コード)」に指定する
.SortMethod = xlStroke

.Apply
End With

MsgBox “ふりがなを無視して、文字コード順で並べ替えました。”
End Sub

応用・注意点

注意点1:ふりがな情報の有無
「ふりがなを使う」をオフにしても、元々入力されているセルのふりがな情報が消えるわけではありません。あくまで「並べ替えのロジック」が変わるだけですので、安心して設定を変更してください。

注意点2:数値データの扱い
文字コード順で並べ替える場合、数値は「文字列」として扱われると、例えば「1, 10, 2」のように並ぶことがあります(1の次は10が来る)。もし数値として正しく並べ替えたい場合は、データの型を事前に確認し、必要に応じて「数値に変換する」などの前処理を組み合わせるのが、ベテランのテクニックです。

タイトルとURLをコピーしました