【Excel】Phonetic関数カナが表示されない時の3つの対処法

目次

Excelシートに手入力したデータはルビが自動的に振られている

Excelシートに手入力したデータに対しては、入力時に勝手にルビ(かな)が振られる。

ので、そのセルに対してPhonetic関数を使用すると
「全角かな or 全角カナ or 半角カナ」でルビが自動的に振られている。
非表示なんだけどね~デフォルトだと「全角カナ」になるのかな?

サンプルとして、A1セルに「騎手名」、A2セルに「今村 聖奈」と入力しルビを確認する

「ア亜」をクリックし、「ふりがなの表示」をクリックすると、

手入力したセルのルビを確認する

「ふりがなの設定」でひらがな・カナ・カナの指定が出来る。

B1セルに「=Phonetic(A1)」と入力
B2セルで「Ctrl + d」を押す

B1,B2にフリガナを入力する操作手順

こんな感じで、ルビからフリガナを入力できるのだが、これがコピペしたデータだとルビが振られていないので
Phonetic関数を使用してもそのままのセル値が表示されることになる。

実際にJRAホームページに騎手リーディングのデータをコピペしExcelシートに貼り付けてサンプルデータを用意する。

Excelシートにコピペしたデータをイミディエイトウィンドウを使用して一括でルビを振る方法

Excelシートにコピペしたデータはルビが振られていないのでphonetic関数でそのままだと変換できない。
上記方法で一つ一つルビを手動で振り直していくのも数が10、20程度なら問題ないが大量なデータだと面倒だ。
そんな時は「ExcelVBAを使用して一括でルビを振る方法」で対処する。

開いたExcelブックが通常の「Microsoft Excel ワークシート (.xlsx)」の場合

この場合は「ALT+F11」でExcelVBAを記述してもマクロを保存できないので

  1. ルビを振りたい範囲を選択
  2. 「ALT+F11」でExcelVBAを表示
  3. 「Ctrl+g」でイミディエイトウィンドウを表示
  4. イミディエイトウィンドウ内に「Selection.SetPhonetic」と入力
  5. 「Enter」を押す
イミディエイトウィンドウを表示

この5手順でコピペしたデータにルビが振ることが出来る。
その後、Phonetic関数を使えば手入力した時と同様にカナ表示される。

サンプルデータをコピペで作成しPhonetic関数を使ってルビを振る前後のシートを比較する

サンプルデータをJRAホームページから騎手名をコピペして作成する。

順位 騎手名
1 川田 将雅
2 岩田 望来
3 松山 弘平
4 福永 祐一
5 C.ルメール
6 坂井 瑠星
7 武 豊
8 鮫島 克駿
9 西村 淳也
10 M.デムーロ
11 幸 英明
12 池添 謙一
13 藤岡 康太
14 和田 竜二
15 菱田 裕二
16 藤岡 佑介
17 岩田 康誠
18 浜中 俊
19 角田 大和
20 今村 聖奈

ルビを振らずにPhonetic関数を使うと、そのままの文字列が表示されてしまう例

ルビが振られていない場合のphonetic関数の例

上記5手順で、イミディエイトウィンドウ内に「Selection.SetPhonetic」と入力し変換すると

  1. ルビを振りたい範囲を選択(今回の範囲だとB1:B21)
  2. 「ALT+F11」でExcelVBAを表示
  3. 「Ctrl+g」でイミディエイトウィンドウを表示
  4. イミディエイトウィンドウ内に「Selection.SetPhonetic」と入力
  5. 「Enter」を押す
イミディエイトウィンドウを使って一括でルビを振る前と後

C1セルに入力した「=Phonetic(B1)」が「騎手名」から「キシュメイ」とカナ変換されたのが分かる ❣

ExcelシートにコピペしたデータをExcelVBAマクロを使用して一括でルビを振る方法

2つのサンプルマクロを準備してみた。

  • 一つは上記の「Selection.SetPhonetic」を一行Subモジュール化し、手動で範囲指定しマクロ実行
    • マクロ名:Sub SSetPhonetic()
  • 一つはシート名!セル範囲を指定し、C列にカナ表示させる[=phonetic関数]を埋め込み値を確定するマクロを実行
    • マクロ名:Sub SSRubiSet()

「Selection.SetPhonetic」を一行Subモジュール作成「マクロ名:Sub SSetPhonetic()」

Sub SSetPhonetic()
    Selection.SetPhonetic
End Sub

SSetPhonetic()を実行する操作手順

  1. Excelシートのルビを振る範囲を選択する(今回だとB1:B21)
  2. 「ALT+F8」を押す
  3. SSetPhonetic()を実行する
範囲指定しマクロ名:SSetPhoneticを実行する

※結果はイミディエイトウィンドウと同じ結果となる。

シート名!セル範囲を指定し、C列にカナ表示し値を確定するSubモジュール作成
「マクロ名:Sub SSRubiSet()」

Sub SSRubiSet()
''  B列のデータをC列に:全角カナ
''  テストモジュール

Dim i As Integer
Dim wk_nm1 As String
    Sheets("Sheet3").Select
    Range("B1:B21").Select

' 全角カナ設定
    Selection.SetPhonetic
    Selection.Phonetics.CharacterType = xlKatakana
    Selection.Phonetics.Alignment = xlPhoneticAlignLeft
    Selection.Phonetics.Visible = False
    
    i = 1
    Do Until CHRCVT(Cells(i, 2)) = ""
        Cells(i, 3) = "=phonetic(B" & i & ")"
        
        '値貼付けで全角カナを値で貼り付ける
        If Not IsError(Cells(i, 3)) Then
            wk_nm1 = Cells(i, 3)
            Cells(i, 3) = wk_nm1
        End If
        i = i + 1
    Loop

    Range("C1").Select
End Sub

Function CHRCVT(r) As String
     If IsNull(r) Then
         CHRCVT = ""
     Else
         CHRCVT = Trim(r)
     End If
End Function

XlPhoneticCharacterType 列挙 (Excel)

セルのふりがなの種類を指定します。
名前 説明
xlHiragana 2 ひらがな
xlKatakana 1 カタカナ
xlKatakanaHalf 0 半角カタカナ
xlNoConversion 3 無変換

SSRubiSet()を実行する操作手順

  1. 「ALT+F8」を押す
  2. SSSRubiSet()を実行する
マクロ名:SSRubiSetを実行した結果

このPhonetic関数を理解すると拡張機能のHebon関数も以外と簡単に習得できる ❣

Excelシートでルビを削除したい場合の4手順

  1. ルビが振られている元データを範囲指定しコピー
  2. 空いているセルもしくは新しいシートに値貼付け
  3. 値貼付けした範囲をコピー
  4. 元のデータに値貼付け

これで何度もテストできるよねw

編集後記

長々とPhonetic関数について説明したが、案外この記事で一番タメになるのは、セル値の一つ上をコピーする「Ctrl+d」
だったりする。。。( ̄▽ ̄)

ルビを振るのは、「Selection.SetPhonetic」をなんとなく一度使ってみて記憶の断片にでもあれば、毎度このブログからコピーもしくは参照して利用すれば個人の業務時間の短縮に繋がる。

”君”の活躍を祈る ❣

それでは、またね~😎

この記事を書いた人

マクロで半自動化!GO!GO!!PROGRAMMING
管理人:あどのまつり
馬齢:牡50代(後)✖1

2023年はコロナ明けでタイ旅行にいきThai!!

目次