【Excel】コピペしたデータにExcelVBAを使ってルビを振る方法

目次

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」をなんとなく一度使ってみて記憶の断片にでもあれば、毎度このブログからコピーもしくは参照して利用すれば個人の業務時間の短縮に繋がる。

”君”の活躍を祈る ❣

Excel VBA 逆引き大全 600の極意 Microsoft 365/Office 2021/2019/2016/2013対応

Excel VBA 逆引き大全 600の極意 Microsoft 365

※私が持っているのが2016年版(以下は2016)

  1. ExcelVBAの基本構文
  2. セルの操作
  3. 関数
  4. ワークシート、ウィンドウの操作
  5. ブック操作
  6. データ操作
  7. テーブル・ピボットテーブル
  8. 図形
  9. グラフ
  10. ユーザーフォーム
  11. 印刷
  12. ファイルとフォルダ
  13. データ連携
  14. イベント
  15. バージョン・トラブルシューティング・エラー処理
  16. 高度なテクニック
  17. 索引

目次が巻頭で検索が巻末。昔のタイプの本の構成だが、索引がページでなくTipsという見出しNo.になっていて慣れるまでは検索しづらい。
Amazonレビューは★3.9

私のKindle-Unlimited評価は★4

それでは、またね~😎

目次