• ベストアンサー

エクセルのPHONETIC関数(もしくはマクロ)で一括してフリガナ変換をしたい。

よろしくお願いいたします。 エクセルの名簿で100名以上あるのですが、 フリガナがなく、漢字の「氏名」しかありません。 そこで、氏名の右に列を挿入して、PHONETIC関数をコピーして入れましたが、漢字のままの氏名しか変換されてきません。 ◆漢字のあるセルで”「shift」+「alt」+「↑」”をひとつひとつやってみまると、フリガナに返還されますが、手間がかかってしかたありません。 ◆関数を使用もしくは、マクロを使用して、一括してフリガナ変換できる方法を教えてください。 よろしくご指導をお願いいたします。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

おそらく、CSVファイルから変換したようなファイルかと思います。 Phonetic関数が使えるのは、Excel上で漢字変換したものだけに限られます。 下記のようなものを標準モジュールに関数として登録すれば少しは役に立つかも? 使い方はPhonetic関数と同じ。 ※得られる結果は、IMEで登録されている読み方の中から適当に選ばれますので 必ずしも本来の読み方になるとは限りません。 生方(うぶかた)→ おがた、中田(なかた)→なかだ など等 つまり、最終的には人間のチェックが必要です。 Function gh(rg As Range) As String   gh = Application.GetPhonetic(rg.Value) End Function

yastaro
質問者

お礼

マクロの関数だと、こんなにシンプルで早く出来るのですね。 ありがとうございました。とても勉強になりました。 また、解説もいただきまして、ありがとうございました。

その他の回答 (2)

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.3

以下のマクロは、1行目がタイトル行として、A列の2行目から漢字の氏名が入っている場合に、B列にフリガナを設定します。これはVBAのメソッドGetPhonetic()を使ってますが、当然ながらこれで取得したフリガナは間違っていることがあるので、そのときは手で修正してください。 Sub フリガナを取得()   Dim r As Range   For Each r In Range("A2", Range("A65536").End(xlUp))     Range("B" & r.Row).Value = Application.GetPhonetic(r)   Next End Sub また、以下は、B列のフリガナを元に、A列の氏名にフリガナを設定するマクロです。上記マクロで取得したフリガナを修正した後に実行すると、次からはワークシート関数のPHONETIC()で取り出せるようになります。 Sub フリガナを設定()   Dim r As Range   For Each r In Range("B2", Range("B65536").End(xlUp))     Range("A" & r.Row).Phonetic.Text = r.Value   Next End Sub

yastaro
質問者

お礼

ご丁寧な解説つきのご回答をいただきまして、感謝いたします。 試してみて、完璧にできました。 ありがとうございました。また、勉強にもなりました。 ただ、ポイントにつきましては、先着順での評価をさせていただきました。ありがとうございました。

回答No.1

フリガナをつけたいセルを範囲選択して、書式→ふりがな→表示/非表示を クリックすればふりがなが出てきませんか...

関連するQ&A