• ベストアンサー

cvsファイルにしたせいか、Excelの文字の並べ替えができない

Excelのファイルを作成していましたが、いろいろと失敗し一度cvsファイルにして再度Excel形式(xls)で保存しました。 このファイルに追加で文字を書いて、並び替えをすると例えば同じ「阿部」でも一緒の文字と認識しないようなのです… 検索はできるのですが、なぜか並び替えだけうまくいきません。 使っているのはExcel2000です(Win98)、Excelのファイルの方が良いのですが、 なにか良い解決策はありませんでしょうか?

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

●EXCEL->CSVで保存したファイルをメモ帳などで表示すればわかるように、フリガナ情報は保存されてません。CSVファイルはEXCELとの関連で言えば、セルの「値」だけ(加えて改行も)を保存しています。 なおフリガナは、セルの「値」ではありません。 一方コンピュターの並べ替えは、基本は、値の数や文字コード(のメモリ保存値、2進数)で行われるのです。 ところがエクセル(MS社)が日本(他?)の利用者の利便に配慮して、フリガナ情報をIMEの漢字変換を利用したとき保存するようにして、セルのフリガナ記憶域にセットするようにして、素人でも、漢字の読み=フリガナ順の並べ替えができるようにして、「フリガナを使う」を規定値にして、並べ替えをやさしくした。それでプログラム経験のない、エクセルからパソコンに入った人は、フリガナ(漢字の読み)で並べ替えができるし、コンピュターで漢字の読み順に並べられて、当たり前のように思っている人が多い。しかしエクセルが元の値ではなくて、フリガナでソートの「キー」を置き換えている仕組みにしているわけです。 IMEの漢字変換を通らないで、セルの値がセットされた行の、ソートキーは空白であるから、予想外の順序に並ぶ。 ●下記は知る人には有名な話です (1)CSV・他のアプリファイルからきたデータ (2)コピー (3)=A1(先日他の方の質問あり) (4)置換 (5)エクセル旧バージョン (6)一部のショートカットコピー などではフリガナが渡ってこない。 ●対処は 上記(1)のデータの入ったセルを対象に、(新しい列を使い) =PHONETIC(A1)のように関数を入れると、一応フリガナが出ると思う。 出ない行がある場合は、改めて入力するか Sub test01() d = Range("A65536").End(xlUp).Row For i = 1 To d Cells(i, "D") = Application.GetPhonetic(Cells(i, "B")) Next i End Sub をVBEの標準モジュールに貼り付けて実行すれば出ると思う。 その列でソートすればよい。 しかし仮名漢字変換の第1候補あたりを拾ってくるようなので、氏名などの場合は特に見直しと修正は絶対必要です。 (例)氏名 高原 コウゲン と出る。 タカハラに直す。

bibi555
質問者

お礼

どのような原理で起こるのかなど、詳細に教えていただき、大変参考になりました。 ありがとうございました!

その他の回答 (2)

回答No.2

>一度cvsファイルにして という時点で、「ふりがな」情報が消えているのでしょうから、それを「再度Excel形式(xls)で保存し」ても、「ふりがな」の無いデータとしてしか扱われないのだと思います。 一度、「書式」「ふりがな」「編集」としてみて下さい。そうすると、「ふりがな」のないデータも、標準的な「ふりがな」が表示されると思います。 そのあとで、ソートしてみてはいかがでしょうか? もちろん、「ふりがな」が標準と違っていれば、修正できます。

bibi555
質問者

お礼

教えていただきありがとうございます。 参考にさせていただきました。

  • yama_x
  • ベストアンサー率20% (188/940)
回答No.1

並び替えを行う際、オプションの「振り仮名を使わない」を チェックしてください。 エクセルは実は入力されたデータの振り仮名を持っており、 並び替えの際はデフォルトはそちらを利用します。 上記チェックを行うと、文字コード順で並び替えを行います。

bibi555
質問者

お礼

今回のデータは振り仮名順の必要はなかったので、簡単なこの方法を使いました。 教えていただきありがとうございました

関連するQ&A