- ベストアンサー
文字列のn番目のふりがなだけを抽出したいです。
セルA1に「好きな色は紫です」 という文字が入っているとします。 セルB2に 文字列のうち6番目、すなわち「紫」だけのふりがなを 表示させる方法はあるでしょうか。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#2,#3です。補足に関して ーー そのように、質問の初めに、目的を明示してもらえれば、目指す方向がわかって 適当と思う方法が、答えやすいです。 例えば、質問で、なせ何文字目を指定しているかの理由が初めてわかった。 ーーー フリガナが必要とされるのは (1)日本在住の外国人向け教材 (2)幼児向け教材 (3)難語が多い文章 などのうち、本質問は、(1)向けらしい。 ーー 本質問は、エクセルの質問として出したものと思うが、文章の話らしいから ワードの利用がおすすめです。 エクセルで教材を作る理由はあるのだろうか。 エクセルしか知らない? ーーー WEBで「フリガナ」で照会すると、ワード(VBA)の話ですが、 https://kagakucafe.com/2020092311700.html Wordの文章にルビ(ふりがな)を自動で振れるマクロ ーー https://www.ka-net.org/blog/?p=7576 ルビ(ふりがな)を一括設定するWordマクロ(改良版) ーー これはマクロという「プログラム」ですが,無料のソフトを手に入れて、使うと 割り切って(使えるなら)使うべきです。 https://www.vector.co.jp/soft/dl/winnt/writing/se504700.html 自動ルビ振り for Word ーーー ただしこの作者は、仕事でプログラムを組んでいる方で、勉強して、このプログラムを 作ったようです。WordVBAどいうものです。 しかし、理解や、一部手直しは難しいでしょう。 WordVBAに関しては、解説本もWEBの記事も少なく、習得には時間がかかります。 ーー (手作業のおすすめ) 何処に漢字があるかをプログラムで探すのが、まずむつかしいので、その文章において、その ルビが必要な漢字部分を、マウスで選択して、その範囲の漢字にフリガナを振る、程度にすれば すこし解りやすく、プログラムも簡単になるでしょう。 メリットは (1)融通が利く (2)ルビを振る漢字を選べる (3)ワードがとりあえず当初出したルビを、人間の教養で、修正できる。 (4)作業が必要ですが、文章作成に比べて、数分の一でしょう。 その場合のVBAの力を借りますが、それは 標準モジュールに Sub test07() For Each r In selection.Words r.Select Application.Dialogs(wdDialogPhoneticGuide).Show Next End Sub を作り(実質は4行)(今回はコピペでよい)、 ーー https://tonari-it.com/word-vba-macro-shortcut-key/ の中程の 「Wordマクロをショートカットキーに登録する」で解説されている操作で、 「ALTキー+Bキー」に登録する。(+は2つのキーを同時押しを意味する。) 例 ワードの文書を表示した画面で、私の今回の文書では、「著作権法」という語句があるので、ここに フリガナを振るとします。 この部分をマウスで範囲指定して、ALTキーを押しつつ、Bをキーボードから入力。 ルビを振る(ワードの)画面が出るから、内容(特にふぃりがなそのもの)を確認してOK。 このような操作を、ルビを振る、語句ごとに繰り返す。 このように、ルビを振る、ワードの操作画面を出す手間が省けます。 ーー 上記「>標準モジュールに」、以下の部分のやり方は、望むなら、多少解説を加えることは可能。 初めての人は、やはり、しり込みするかな。
その他の回答 (4)
- HohoPapa
- ベストアンサー率65% (455/693)
利用者の期待するフリガナが埋まっている かつ、VBAを持ち込める。 という条件でよければ 後記コードを標準モジュールに埋め B1=getkana(A1,6,1) B2=getkana(A2,4,2) という数式を埋めるというのはいかがでしょうか。 第一引数は、対象セル 第二引数は、開始文字位置 第三引数は、文字列に長さです。 以下、標準モジュールのコード Option Explicit Function getKana(rng As Range, S As Long, L As Long) As String getKana = rng.Characters(S, L).PhoneticCharacters End Function
- imogasi
- ベストアンサー率27% (4737/17069)
#2です。そもそも、どういう場面で、どういう目的で、質問のことを実現したいのか。 過去質問でも、これらを明記しないで質問する質問が、ほとんどだが、適当でないだろう。 #1のご回答を見て、本質論として、1文字にしたら、普通のケースで多用される振りがなとは、変わる場合も多い。だから質問のことができても、意味をなさない場合も多いと考えられる。 意味論的に。「好き」の「好」に対し、「すき」と「こう」。特に地名などは珍しいフリガナ(読み)も多い。 ーー そういう本質論とは別に、技術論に関して、下記テストをやってみた。 (1)ブックを閉じて保存した場合、影響は? ・新規シートのセルに漢字混じり文を入力。 途中入力間違いなどもした、が訂正して結果は正しくした。 ・そのエクセルのブックを、名前を付けて保存して、システムもシャットダウン。 ・ウインドウズを再立ち上げ ・エクセルを立ち上げて、上記のブックをオープン。 ・シートを立上げ開く。 ・シート1のA列をコピーしてシート2のA列にコピペ。 ・シート2のB列でPHONETIC関数を入れた。 ・B列にはフリガナが出た。 エクセルブックをクローズしても、 フリガナの元になる情報は保存したブックに保存されるようだ。 ・MID関数で1文字を取り出したものにフリガナを振ろうとしたが、=PHONETIC(B7) では空白が返る。 B7は=MID(A6,5,1) で結果は、「好」 ======= (2)マクロの SetPhonetic マクロでセルに文字列を入れた場合。VBAでリテラル入力するケース。 Sub test01() Range("A6") = "紫の色が好きです" End Sub この状態では、A6セルに対し、Phonetic関数は効かない。 ところが Sub test02() Range("a8").SetPhonetic End Sub を実行すると、Phonetic関数は効く。https://forest.watch.impress.co.jp/docs/serial/exceltips/1241815.html 参考 ーー またWEB記事の漢字混じり文をシートのセルへ(手動)コピペしても同じ効果がある。 Range(当セル).Setphoneticを実行すると、漢字交じり文そのままが、フリガナ文に自動で変わる。 「当セル」には、Phonetic関数を入れたセルでなく、元の漢字が入っているセルを指定する。
- imogasi
- ベストアンサー率27% (4737/17069)
小生も下記に自信ないのですが、参考に。 下記のようなのを、質問者の実際のセルデータで、やってみてください。 例 B4セル 好きな色は紫です ー>今日入力しましたものです B5 セルに =MID(A4,6,1) 紫 =PHONETIC(B5) 結果 空白 (1)エクセルのセルに入力された漢字などのふりがなを表示する関数は、=PHONRTIC(セル番地)です。しかしこれはそのシートに直接に手入力されたときの(カナ漢字変換?)などの情報をもとに、出しているので、他シートや他ソフトなどにあるデータやWEB画面などの文字列をコピーしたデー入力済みの漢字交じり文などから、言語翻訳のように、カナを創出しているのではないようです。 そのどれに当たるか?ということは質問には書いてない。ーー>多分問題と思う (2)では、文字列の1部を取り出すのは、MID関数ですが、(1)の手入力でセルに入れた文字列にMID関数を適用して掴んだ文字列を対象に、PHONRTIC関数が使えるかどうか、やって見てください。 どうも漢字のままのようです。 フリガナは、エクセルの産地の欧文の世界からは異端な仕組みと思われ、仕組みが十分ではないようです。 ーー 識者からそうでないという回答や、事実そうでない例が出たらお詫びします。
- m5048172715
- ベストアンサー率16% (860/5261)
○文字目の文字列を簡単に抽出できるが、 どんな漢字をそのとき何と読むのかの情報は必要になる。 例 筑紫の紫はしだけど、 色は紫の紫はむらさきなので。
補足
丁寧な解答ありがとうございます。回答何度も読み返して理解しようとしております。もしかしたらおっしゃっていることで解決するかもしれません。 作ろうとしているプリントの画像が添付できれば良いのですが、A1に入れたフリガナ情報入りの文章を、MID関数をつかって作文用紙のようなマス目に一文字ずつ、表示させる読みやすくする学習用の教材プリントを作りました。しかし、私の担当する児童は、文章が読めても、漢字が全然よめません。そこでフリガナも抽出してわきに表示させたいのです・・・。