• ベストアンサー

Excelで降順、昇順表記

データの中に ●漢字 ●アルファベット ●ひらがな ●記号 などがあり、読み方順に降順・昇順表記をしたいと思っています。 例えば、 【アルファベットなら】 「ABC」を『えーびーしー』 【漢字なら】 「田中」を「たなか」 【記号なら】 「@」を「あっと」 として、データを並べ替えたいと思っています。 理想は、ランダムなデータを @ いろは ABC 田中 のように出来ないのでしょうか? 出来るとすれば、どの様な設定をすればよろしいのでしょうか? 教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • te12889
  • ベストアンサー率36% (715/1959)
回答No.1

(1) 「ふりがなの表示」ボタンでルビを表示させます。 (2) ルビが希望通りでないところは、「ふりがなの編集」で手作業で修正します。 (3) ルビ表示が邪魔なら、「ふりがなの表示」ボタンを再度押します。 以上で、ルビによるソートができるようになります。

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 単純な並び替えでなく、読みでの並び替えとなるとかなり厄介です。 表示に関してはVBAになりますが、一例です。 ↓の画像のようにSheet2に対応表を作成しておきます。 A列は記号・アルファベットを、B列にはその読みを「ひらがな」で作成しておきます。 この下準備ができた上で、 Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → Excel画面に戻りマクロを実行してください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, k As Long, c As Range, str As String, wS As Worksheet Set wS = Worksheets("Sheet2") With Worksheets("Sheet1") .Range("B:B").ClearContents For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row If Left(.Cells(i, "A"), 1) Like "[一-黑]" Then .Cells(i, "B") = StrConv(WorksheetFunction.Phonetic(.Cells(i, "A")), vbHiragana) ElseIf Left(.Cells(i, "A"), 1) Like "[あ-ん]" Then .Cells(i, "B") = .Cells(i, "A") Else For k = 1 To Len(.Cells(i, "A")) str = Mid(StrConv(.Cells(i, "A"), vbNarrow), k, 1) Set c = wS.Range("A:A").Find(what:=str, LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then .Cells(i, "B") = .Cells(i, "B") & c.Offset(, 1) End If Next k End If Next i End With End Sub 'この行まで マクロを実行すると、Sheet1のB列に画像のような表示となります。 これでB列をキーとして、並び替えが可能になります。 ※ 漢字に関しては直接入力したデータでないとちゃんと読みが表示されません。 (別ファイル等からコピー&ペーストした場合は音読みになる場合がある) ※ 1セル内には「ひらがな」「漢字」「アルファベット」などは混在しないで、1種類だけとします。 仮に「ひらがな」や「アルファベット」内に漢字が混在しているとそれこそ面倒なことになります。 とりあえずはこの程度で・・・m(_ _)m

関連するQ&A

専門家に質問してみよう