人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Excelの並び替えに関する質問です。良い回答は、200ポイント差し上げます。
並び順を以下のようなルールで並び替えたいの思います。
数字(半角全角)→英字(半角全角)→ひらがな/漢字→カタカナ(半角全角)

【理想の並び替え】
A列 B列
1 012ディズニー ーーー
2 2GODBABY ーーー
3 2おいなり ーーー
4 2豆しば ーーー
5 2クロネミニノート ーーー
6 BIG ーーー
7 にゃんぱい ーーー
8 仮面ライダー ーーー
9 コアラのマーチ ーーー

マクロでの回答は、ソースも記述願います。
どうか宜しくお願いします。


●質問者: anim130M
●カテゴリ:ビジネス・経営 コンピュータ
✍キーワード:BIG Excel おいなり ひらがな カタカナ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ardarim
●200ポイント ベストアンサー

マクロでソート用の文字列を計算する関数を用意し、空いている列(例えばC列)に格納します。その上で、C列をキーにしてソートします。

マクロは、標準モジュールに追加してください。(VBAエディタで、ファイル名の上で右クリックし、挿入→標準モジュール)

Function SortIndex(ByVal src As String) As String

 Dim i As Long
 
 SortIndex = "_"

 For i = 1 To Len(src)
 SortIndex = SortIndex & Right$("000" & Hex$(AscW(StrConv(Mid$(src, i, 1), vbNarrow))), 4)
 Next i

End Function

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


★入力例(C列に数式を入力)

ABC
1012ディズニー---=SortIndex(A1)
22GODBABY---=SortIndex(A2)
32おいなり---=SortIndex(A3)
42豆しば---=SortIndex(A4)
52クロネミニノート---=SortIndex(A5)
6BIG---=SortIndex(A6)
7にゃんぱい---=SortIndex(A7)
8仮面ライダー---=SortIndex(A8)
9コアラのマーチ---=SortIndex(A9)

★実際の表示(数式の計算後。C列でソートします)

ABC
1012ディズニー---_003000310032FF83FF9EFF68FF7DFF9EFF86FF70
22GODBABY---_00320047004F00440042004100420059
32おいなり---_0032304A3044306A308A
42豆しば---_00328C4630573070
52クロネミニノート---_0032FF78FF9BFF88FF90FF86FF89FF70FF84
6BIG---_004200490047
7にゃんぱい---_306B3083309330713044
8仮面ライダー---_4EEE9762FF97FF72FF80FF9EFF70
9コアラのマーチ---_FF7AFF71FF97306EFF8FFF70FF81


同じ文字種内での半角と全角は順不同になります。例えば、半角数字と全角数字は同一視されます。半角数字→全角数字のような並び替えを期待する場合は、仕様が変わります。


また、ソート用の列を作らず全部マクロで行うことも可能ですが、プログラムは少し長くなります。ご要望があれば回答します。

◎質問者からの返答

回答ありがとうございます。

表には3000行の計算式を入れているためか、A列が空であってもソートされてしまいました。

どのように回避すればよろしいでしょうか?


2 ● sk
●0ポイント

1 2豆しば

2 コアラのマーチ

3 012ディズニー

4 にゃんぱい

5 BIG

6 2GODBABY

7 2クロネミノート

8 仮面ライダー

9 2おいなり

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ