重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Excel 2002 を使用しています。
「ハート」、「ルーム」、「ワード」等の全角カナがセル A1 に入力されているとします。ちなみに、当該文字の「ー」の ASIIコードは 8508 です。
ここで、式 =ASC(A1) は半角カナを返してくることはご承知のとおりです。当然のことながら「ー」も該当する(?)半角文字(ASII 176)に変換されます。

さて、セル A1 を選択して[書式]→[ふりがな]→[設定]→[ふりがな]のメニューで、[種類]を“半角カタカナ”を選択して[OK]をクリックしておきます。

奇妙なことに 式 =PHONETIC(A1) は全角文字「ー」を半角にして返してくれないのです。
この現象は Excel 2002 だけの(既知の)バグなのでしょうか?何か情報をご存知の方、出典を付して教えていただけないでしょうか?

「=PHONETIC()関数が返す半角カナ」の質問画像

A 回答 (6件)

追伸です。



# 自家製PHONETIC 関数を考えてみたいと思います。もしくは、、セル上の文字の中を半角に換えるもののどちらかです。

よく考えれば、PHONETIC 関数なら、その出てきたものを、ASC関数で半角にすればよいのですから、その中身を半角にしなければ意味がありませんでした。マクロ実行後は、長音記号等は、半角になっていると思います。

'標準モジュールに貼り付けて実行(F5) します。

Sub PhoneticHalfKana()
'長音記号等を半角のふりがなにするマクロ
Dim rng As Range
Dim c As Variant
With ActiveSheet
  On Error Resume Next
  Set rng = .UsedRange.SpecialCells(xlCellTypeConstants, xlTextValues)
  On Error GoTo 0
  If Not rng Is Nothing Then
  Application.ScreenUpdating = False
  For Each c In rng
    c.Phonetics.CharacterType = xlKatakanaHalf
    If LenB(StrConv(c.Phonetic.Text, vbFromUnicode)) - LenB(c.Phonetic.Text) <> 0 Then
      c.Phonetic.Text = StrConv(c.Phonetic.Text, vbKatakana + vbNarrow)
    End If
  Next c
  Application.ScreenUpdating = True
  End If
  Set rng = Nothing
End With
End Sub

この回答への補足

》 PHONETIC 関数なら、その出てきたものを、ASC関数で半角にすれば
》 よいのですから…

なるほど。=ASC(PHONETIC(A1)) で行けそうですね。ありがとうございました。

実は(ご存知かも知れませんが)私は Excel のマクロがカラッキシ出来ない人です。
でも提示いただいたマクロを是非試してみたいものです。「標準モジュールに貼り付けて」の「標準モジュール」てのが分かりません。「標準モジュール」の出し方を教えてください。

補足日時:2009/06/09 20:07
    • good
    • 0

こんにちは。



>ご存知かも知れませんが・・私は Excel のマクロがカラッキシ出来ない人です。

mike_gさんとは、ここ以外ではやり取りしたことはないはずですが、私の知っている人と同じなら、前のところは読んでいましたので、良く知っています。(^^;(つまらないことで、スミマセン)

マクロは、本来は、食わず嫌いでしょうけれども、実際、Excelは何でもできるので、マクロに興味を持っても、それだけでは習得には続かないものですね。私は、マクロを覚える目的はありませんでしたが、語学のひとつとして覚えました。

ただ、Office を深く知るためには、どうしても、VB やC言語などの知識が必要になってくるようです。最近では、.Net のことも出てきています。Excel 2003以降では、.Net の一部の機能が出来るようになっています。

>「標準モジュールに貼り付けて」の「標準モジュール」てのが分かりません。「標準モジュール」の出し方を教えてください。

定型文ですが、
-------------------------------------------------------------
Alt +  F11 (Altを押しながらF11)を押すと、Visual Basic Editor 画面が出てきます。
次に、メニューの[挿入]-[標準モジュール]と開けて、クリックすると、画面が現れますので、Sub ~End Sub のコードを貼り付けます。

貼り付けたら、Alt + Q で、画面を閉じます。
-------------------------------------------------------------
今回のマクロは、マクロを行っても文字の部分は何も変わりませんが、Phonetic 関数で、見てみると変化が出てきます。
    • good
    • 0
この回答へのお礼

お蔭様でマクロを実行した後で PHONETIC関数の変化を確認できました。
誠にありがとうございました。

お礼日時:2009/06/11 01:19

こんにちは。



>このカテゴリーおよび Google で“PHONETIC”をキーワードにして検索してみましたが、該当する記事を見出せないでいます。

PHONETIC ではなくて、「ふりがな」です。

直接、「長音記号」の問題とは関係がありませんが、いくつかの資料があります。

大元のソースは、

http://msdn.microsoft.com/en-us/library/ms970145 …
IFELanguage Functions

私自身も、Cに関しては未だ勉強中で詳しくは分かりませんが、いわゆる、ふりがなを導きだすのは、API(Application Programming Interface)を使っているわけです。

「楽してWORDだルビを振ろう」
http://www.sh.rim.or.jp/~hands/readings/ruby001. …
>ime98から タイプライブラリ*1なるものが公表されています
(同じテーマで、未だに更新しているのは、ちょっと驚きです)

IME98のタイプライブラリが出る前に、Excelの関数を使わずに「ふりがな」を出す方法というのが発端です。ExcelのPHONETIC関数を利用する方法もあるのですが、ユーザーが、必ずしもそういう環境にある人ばかりではありませんから、Windows のシステムを使う方法や、プライベートのフリーのタイプライブラリを利用する方法を編み出した人もいました。Net 内で有名な回答者の一人が、この方法を提示しました。元のタイプライブラリは、海外の人が公開したものです。私も二種類の方法を考えてみました。

その周辺の話のネタです。
http://homepage1.nifty.com/MADIA/vb/vb_bbs2/2003 …

この周辺の話のキーワード「MSIMEJPN」

もし、もう少し、ここの質問をオープンしていただければ、自家製PHONETIC 関数を考えてみたいと思います。もしくは、、セル上の文字の中を半角に換えるもののどちらかです。もしご興味があればですが。しかし、前回書いた変換リストの順位を変換する方法は分かりません。

なお、画像は、今回、「長音記号」を半角にした方法です。セルの中の文字を選択して、Shift + Alt + ↑ で、リストを出して、その中から、半角を選択するものです。
「=PHONETIC()関数が返す半角カナ」の回答画像4
    • good
    • 0

こんばんは。



この話は、もともと、Office 97の時に、頻繁に出てきた話で、当時の情報が未だに残っているはずです。

>=PHONETIC()関数 で一発で半角の「ー」が返るべきと思っていたのは私の「誤解」だったのですね。

おそらく、この話は、MSIMEの変換システムに関わってくる話だと思いますが、変換するときに、文字--読みには、数値が付けられるようです。

これは実験はしていないので、違うかもしれません。うろ覚えの話ですが、ずっと、こういうイメージをしてきています。


 回数
--------- =比率
 規定数

この数値が高ければ高いほど、読みと文字の関係が強くなるわけです。

しかし、この規定数が多ければ、いくら変換しても、読みと文字の関係が強くなりません。そして、数値の近い順に並べてあって、そのリストの1番目から出てくるわけです。

今は、半角を使う絶対数が減っていることと、「長音記号」には、二種類あって、それに対応する半角がひとつなので、また、よけいに出てこないようになっているのではないか、と考えています。

>一発で「phonetic(希望)」のようにする設定は無理ということですね?

私の理屈で行けば、分母は変えられませんが、何十回なのか、何百回なのかで、変換の回数によって、変更できるのではないかと考えています。
    • good
    • 0
この回答へのお礼

》 この話は、もともと、Office 97の時に、頻繁に出てきた話で、…

知りませんでした。(忘れてしまったのかも)
このカテゴリーおよび Google で“PHONETIC”をキーワードにして検索してみましたが、該当する記事を見出せないでいます。

何れにしても、PHONETIC関数が半角カナを返せるのは“純粋な”カナだけで長音記号、ナカグロ等の記号類は非カナ扱いである、と理解しておきます。
今後は
=SUBSTITUTE(SUBSTITUTE(PHONETIC(A1),"ー","ー"),"・","・")
で対応しようと思います。

色々とありがとうございました。

お礼日時:2009/06/09 08:16

mike_g さん、こんにちは。



mike_gさんは、某所で、長くExcelを教えてきた立場でしょうから、今さら、私が満足させられるだけの情報はないかもしれません。

しかし、
>全角文字「ー」を半角にして返してくれないのです。
これは、誤解なさっているように思います。慣用的な問題なのだと思います。

まず、この呼び出しの仕組みは、一応は、Microsoft 側はmsime.h(C言語のソース)で公開されてはいるようですが、MSIMEの変換リストの中から、最初にあがっているものを挙げてきているに過ぎないわけです。

例えば、「幸子」は(さちこ)なのか、(ゆきこ)なのかは、それぞれの人によって違うのは、変換リストに一番上にあるものを呼び出しているわけです。「-」(長音記号)の半角[JIS176 = &HB0] が、一番上にはないわけで、もしも、IMEを使って、よく半角を使って変換していたら、そこに出てくるはずです。試しに、全角文字のCtrl + Alt + ↑(上) で、リストの2番目か3番目のものを出してみれば、出てくるはずです。半角+全角+半角という表示は、あくまでも、慣用的文字単位の変換なだと思います。
「=PHONETIC()関数が返す半角カナ」の回答画像2

この回答への補足

[回答番号:No.1]で指摘された私の勉強不足の所為で、恥ずかしながら Wendy02さんのコメントがよく分からないでいます。
何れにしても、“半角カタカナ”に[ふりがな設定]しても、=PHONETIC()関数 で一発で半角の「ー」が返るべきと思っていたのは私の「誤解」だったのですね。うーむ…

添付図(をアップする予定でこれを書いていますが、この[補足内容]にアップ不可能な場合はご容赦ください)は私のCDの曲目リストの一部ですが、「phonetic(現実)」の当該現象は当然のことで、一発で「phonetic(希望)」のようにする設定は無理ということですね?

ちなみに、使用中の IME は Microsoft Natural Input 2002 ver.8.1 です。

補足日時:2009/06/08 20:17
    • good
    • 0

>Excel 2002 を使用しています・・


から第5行の半角文字(ASII 176)に変換されます。
までは本質問と関係ないと思います。記述しないほうが良い。
>=PHONETIC(A1) は全角文字「ー」を半角にして返してくれないのです
Phonetic関数は、IMEで入力したときのカナ漢字変換時のかなの入力を
エクセルが記憶していて、再現するものと思います。
例えば
西野ーー 普通はニシノで入れますがサイノで(それも1文字ずつ)仮名漢字変換すると=PHONETIC(A1)はサイノと出ました。
質問者はこの関数にASC関数のような、変換機能を期待しているようですが、
http://www.relief.jp/itnote/archives/000082.php
をはじめ
Googleで「=PHONETIC()関数」で照会するとたくさん解説実例が出るが、めぼしいものを読んで、勉強しなおしてください。
またフリガナの、ひらがな、全角カタカナ、半角カタカナを左右するのは、メニューの書式ーふりがなーふりがなの設定です。
A1セル(漢字の入ったセル)の設定が、=PHONETIC(A1)を入れたセル(私の場合B1セル)にも影響するようです。
http://www.relief.jp/itnote/archives/000019.php
ーーー
なお添付画像の=PHONETIC(A)でなく=PHONETIC(A1)などですよ。
    • good
    • 0
この回答へのお礼

》 …記述しないほうが良い
》 …勉強しなおしてください

はい、勉強してから出直します。(自信なしですけど…)

お礼日時:2009/06/08 14:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!