質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

1回答

551閲覧

VBA A列の「ふりがな」の付加されているセルの「ふりがなだけ」を、B列に表示したい

ti_0002

総合スコア3

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2021/04/07 23:39

前提・実現したいこと

Excelシート上のA列セルに他の人が記載した「漢字氏名」があり、その文字上に「ふりがな」が表示させてありました。
中には、「ふりがな」が入っていないセルもあります。
そこで、既存の「ふりがな」の状態を保ちつつ、B列にA列の「ふりがな」のみ表示したいのです。

関数としては、添付ファイルのようにできるのですが、マクロ・VBAでどのように記載したら良いかわからないため、こちらに投稿します。

データは、2行目~100行目、場合によっては、増減します(いわゆる繰り返しです)。
また、既存の「ふりがな」の状態を保ちつつ、
と記載したのは、実際には、キラキラネーム等があるため、こちらで敢えて既存の「ふりがな」に手を加えないためです。

お忙しいところ恐縮ですが、ご教示よろしくお願いいたします。イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

たとえばこんな感じでどうでしょう。
(追記:ふりがな非表示の時は空白とする条件を追加しました。)

VBA

1Sub furigana() 2 Dim c As Range, f As String 3 For Each c In ActiveSheet.ListObjects(1).ListColumns(2).DataBodyRange 4 f = StrConv(c.Offset(, -1).Phonetic.Text, vbHiragana) 5 'c.Value = IIf(f Like "[あ-ん]*", f, "") 6 c.Value = IIf(f Like "[あ-ん]*" And c.Offset(, -1).Phonetic.Visible, f, "") 7 Next 8End Sub 9

投稿2021/04/08 01:34

編集2021/04/09 00:11
jinoji

総合スコア4592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ti_0002

2021/04/08 23:44

jinoji様 早速の回答ありがとうございます。 いただいた、codeを実際のシートにて走らせてみました。 なるほど!テーブルに対してこういった書き方ができるのですね。 一点ご教示ください。 A列に氏名(漢字)の上に、「ふりがな」記載がない場合は、空白でB列に表示させたいのですが。 お忙しいところ恐縮ですがよろしくお願いします。
jinoji

2021/04/09 00:14

ふりがな非表示の時は空白とする条件を追加してみました。
ti_0002

2021/04/09 20:25

jinoji様 当方、まったくのVBA初心者にて、関数を使用して何度かコードを記載してみましたが、エラーになってしまいました。この度は、2度に渡る丁寧な回答ありがとうございました。
jinoji

2021/04/09 23:44

エラーが出たとのことですが、どの行でなんというエラーが出たのでしょうか。
ti_0002

2021/04/10 00:36 編集

jinoji様 当方の説明不足で申し訳ございません。 jinoji様が作成していただいたコードは、おかげさまでエラー発生しておりません。 私が当初、作成した見よう見まねにて作成した以下のVBAコード Sub 既存A列ふりがなをB列へ() Dim i As Integer For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row Cells(i, "B").Value = "=IF(CODE(PHONETIC(i,"A"))<=9587,PHONETIC(i,"A"))" Next i End Sub 結果 コンパイルエラー:構文エラー 発生してしまい、解決方法がわからずこちらへ投稿した次第です。 お騒がせしてすみません。
jinoji

2021/04/10 00:31

あ、そういうことですね。理解しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問