- 締切済み
アルファベットのふりがなを表示させるには
Excel2000を使用しています。 商品マスターを作っているのですが、シリーズ名、アイテム名、色名と項目があり、それぞれ漢字、かな、数字、アルファベットが混じっています。この全て(数字以外)にふりがなをつけなければなりません。 漢字、かなは何とかクリアしたのですが、アルファベットを使用する色名のところで苦戦しています。具体的には、たとえば「NV」と入力したとき、ふりがなの列に「ネイビー」と表示させたいと思っています。また、「WH/NV」「ホワイト/ネイビー」のようなものも出てきます。辞書に単語登録してみましたが、phonetic関数では読んでくれませんでした。書式→ふりがな→編集で、表示してはくれるのですが、データ数が数千個にもなるので現実的ではないかなあと…。また、VBEでSetPhoneticも試してみたのですがうまくいきませんでした。 ご存知の方がいらっしゃったらぜひぜひ教えてください。 お願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- GuruGuru22
- ベストアンサー率51% (177/346)
#1です。 私だったら、こーいう感じでやる。 アクティブセルのフリガナを設定する例。 あくまで参考に。言っておくけど、質問者さんの希望で、 コード書き直すつもりはありませんので。 ヒント、一例を提示しただけ。 'ハッシュ作成 Dim hash As Object Set hash = CreateObject("scripting.dictionary") '色名とそのフリガナをハッシュに設定 hash.Add "NV", "ネイビー" hash.Add "WH", "ホワイト" Dim ary Dim i As Integer 'セルの値を/で分割して配列に ary = Split(ActiveCell.Value, "/") '配列ひとつずつループ For i = 0 To UBound(ary) '配列の値をキーにして、ハッシュから 'フリガナを取り出し、配列の値を書き換え If hash(ary(i)) <> "" Then ary(i) = hash(ary(i)) End If Next '配列を/で結合してセルのフリガナに設定 ActiveCell.Phonetic.Text = Join(ary, "/")
- tinu 2000(@tinu2000)
- ベストアンサー率40% (147/366)
>VBEでSetPhoneticも試してみたのですがうまくいきませんでした。 VBAでセットするには、 If Range("C2").Value = "NV" Then Range("C2").Phonetic.Text = "ネイビー" または、 If Cells(2, 3).Value = "WH" Then Cells(2, 3).Phonetic.Text = "ホワイト" で、ふりがなはセットされます。 組み合わせが、膨大になるのでしたら、基本色の200種類をテーブルにセットして置いて、 例えば、 1 NV ネイビー 2 WH ホワイト 3 XX ホニャ セルの値を、InStr や MID を使って"/"で分解して、それぞれ、テーブルを見てふりがなを取得して、 それぞれの、ふりがなを、"/"で繋いで、Phonetic.Textでセットする。 ぐるぐる回せば出来そうです。頑張って下さい。
お礼
tinu2000さま、ありがとうございました。 VBAは勉強を始めたばかりでよくわかりません。 色々自分で調べてみたのですが、まだ使えそうにないことしかわかりませんでした…(;_;)
- GuruGuru22
- ベストアンサー率51% (177/346)
VBAでやる方法もなくはないですけど 色名で並び替えて、範囲選択してフリガナありを 一括入力orコピーではダメ?
補足
さっそくのご回答ありがとうございます。 最初に書き忘れてたのですが、基本色名は全部で200近くあり、それの組み合わせは膨大な数になります。また、入力するのはあまりエクセルの知識のない方なので、できれば最小限の操作(数式で処理するか、マクロ一発!)ですむようにしたいと思っています。 言葉足らずな説明ですみません。
お礼
GuruGuru22さま、重ね重ねありがとうございます。 なるほど、基本の色名をハッシュに設定しておけば、IME辞書までインポートする必要がないのですね。参考にさせていただきます。 …でもやっぱり理解できない部分が多すぎて、うまく動いてくれません。
補足
ネットで色々調べて、なんとかふりがな取得できるようになりました!! Sub 色名ふりがな() Dim rngTarget As Range For Each rngTarget In Selection rngTarget.Offset(0, 2).Value = Application. _ GetPhonetic(rngTarget) Next End Sub ただし、この方法だと全角カタカナで表示されます。 半角にするにはどうすればいいのでしょうか? 初歩的な質問でほんとに申し訳ないのですが、どなたか助けてください…。