問題はこちら
さて、この問題のポイントは、濁点・半濁点を親文字から分離するのですから
親文字である平仮名を如何に半角カタカナに変換するかです。
ところが、エクセルには全角半角変換の関数はあるが
平仮名カタカナ変換の関数が用意されていません。VBAを使うなら
Strconvでも使えばいいんですが、ルールでVBAは禁じ手です。
さて・・・そこでどうするかが頭の使いどころです。
minmaxさんの「地球防衛軍」にも対応していますよ、という言葉・・・
それは、タネは全てお見通しですよ、と言う宣言ですね(^^ゞ
だって「地球防衛軍」という漢字が平仮名に変わるんだもん、フリガナ関数(phonetic)を
使っているのはバレバレですよね・・・(^^ゞ
phoneticによるフリガナはデフォルトで全角カタカナになりますので
これを利用します。
手順(基本的な考え)
1.phoneticで平仮名を全角カタカナに
2.Ascで全角カタカナを半角カタカナに
3.midでばらばらにして1文字ずつ切り出す
4.jisで全角カタカナに
5.codeで文字コードを取り出す
6.文字コードから256を減じて全角カタカナのコードから
全角平仮名のコードに修正
7.charで全角平仮名のコードを文字に
【解答例】
=IFERROR(CHAR(CODE(JIS(MID(ASC(PHONETIC($A2)),COLUMN()-1,1)))-256),MID(ASC(PHONETIC($A2)),COLUMN()-1,1))
(エクセル2007 104文字)
私の解答はこんなのです。
155:=IF(COLUMN(A1)>LEN(ASC(PHONETIC($A1))),"",CHAR(CODE(JIS(MID(ASC(PHONETIC($A1)),COLUMN(A1),1)))-256*(CODE(JIS(MID(ASC(PHONETIC($A1)),COLUMN(A1),1)))>9504)))
ふりがなの設定で右の半角カタカナにするとASC()が外せるので短くなるという訳です。
・・・ということは、2007持ってないのでたぶんですが、くまぷーさんの式も100を切れるかも。
投稿情報: kir | 2008年12 月21日 (日曜日) 午後 08時12分
やっぱりkirさんの式とほとんどおなじで155文字でした。
=IF(LEN(ASC(PHONETIC($A1)))<COLUMN()-1,"",CHAR(CODE(JIS(MID(ASC(PHONETIC($A1)),COLUMN()-1,1)))-256*(CODE(JIS(MID(ASC(PHONETIC($A1)),COLUMN()-1,1)))>9248)))
ちなみに検証した文字は
ドラえもん
銀河鉄道999!
銀河鉄道999!
ウルトラマンA
ぺすたー
k@自転
ゴジラ
でした。
ただし、セルA1に打ち込んでの検証です。
投稿情報: minmax | 2008年12 月21日 (日曜日) 午後 08時19分
ん、9504のほうが理屈的にはあっているみたい。
9248でもうまくはいっているけど。
投稿情報: minmax | 2008年12 月21日 (日曜日) 午後 08時30分
ああ、そういうことか^^;
なーーんも考えなかった・・・・
投稿情報: y sakuda | 2008年12 月21日 (日曜日) 午後 08時40分
しかし、考えて見ると・・・・・・・・
勿論、Phoneticは知ってますが、自分では使ったことが一回もない、ASCはVBAのASCは使ったことがありますが、関数ではあるのも知らなかったw
始めから埒外ですねーー
やっぱり、σ(^^)は関数知らんわw
ま、元々数理屋なんで、Excelは計算手段としてしか考えてないんですがね。
投稿情報: y sakuda | 2008年12 月21日 (日曜日) 午後 08時46分
>CODE(JIS(MID(ASC(PHONETIC($A1)),COLUMN(A1),1)))>9504
こうすれば「銀河鉄道999!」にも対応できたんですねー、、
私は「銀河鉄道999!」の対応なしですが・・・
139文字
=CHAR(CODE(JIS(MID(ASC(PHONETIC($A1))&REPT(" ",COLUMN(A1)),COLUMN(A1),1)))-256*(COUNT(FIND(MID(ASC(PHONETIC($A1)),COLUMN(A1),1),"゚゙ー"))=0))
kirさんやminmaxさんの式に置換えたらあと5文字も減らせましたね(>_<)
投稿情報: む印 | 2008年12 月21日 (日曜日) 午後 08時49分
kirさん、どもです。
>くまぷーさんの式も100を切れるかも。
設定でフリガナを半角カタカナにすれば・・・というのには気がついていました。
しかし、デフォの設定をいじってしまうのには
抵抗があり、やりませんでした。
投稿情報: くまぷー | 2008年12 月21日 (日曜日) 午後 08時58分
minmaxさん、どもです。
>ちなみに検証した文字は
>k@自転
ここで「k@自転」がでてくるとは?!
さすがKさん!!ウルトラ怪獣図鑑に・・・
投稿情報: くまぷー | 2008年12 月21日 (日曜日) 午後 09時05分
いまごろ、、問題に真意が見えた。
皆さんすごいです。
で、
ちょっと違うが、以前に関連したことをしたような気がする。
で、
ばいおりん
ヴぁいおりん
ヴァイオリン
なんて、、ね、
投稿情報: ジョー3 | 2008年12 月21日 (日曜日) 午後 09時07分
ヴ
のほかに、、
もうひとつ面白いのがあったような気がするが、
忘れた。
投稿情報: ジョー3 | 2008年12 月21日 (日曜日) 午後 09時13分
う~ん!
皆さんすごいです。 × 2
PHONETIC関数で濁点が抽出できなくって、
CODE関数を見ても、濁点・半濁点の並びがバラバラだし…
まったく解答に、たどりつけませんでした。
投稿情報: かず | 2008年12 月21日 (日曜日) 午後 09時21分
ひゃ
>ヴぁいおりん
>ヴァイオリン
には対応してなかった。
投稿情報: minmax | 2008年12 月21日 (日曜日) 午後 09時23分
実は「う゛」の問題にジョー3さんが触れていたのを
kirさんの下記蠣コメントで思い出したので
50音、濁点、半濁点のみとさせて頂きました。
http://kumapooh.justblog.jp/blog/2008/12/post-3887.html#comment-17958334
ジョー3さん、どこで「う゛」のことを
言ってらしたんでしたっけ?
なんか、このブログでだったような気が・・・
投稿情報: くまぷー | 2008年12 月21日 (日曜日) 午後 09時30分
>どこで「う゛」のことを
あの、その、---
あ゛ーーーーー
え゛ーーーーー
う゛ーーーーー
・・・・
忘れましたーーーー
なんで、
う゛ーーー だけがーーー
なんて、言い合ったような気はする。
投稿情報: ジョー3 | 2008年12 月21日 (日曜日) 午後 09時46分
ジョー3さんの発言のありそうなところを
探してみたんですが、結局みつかりませんでした。
どこだったんだろ?気になる・・・
投稿情報: くまぷー | 2008年12 月21日 (日曜日) 午後 09時48分
ヴヴヴヴヴヴヴヴ
ウ゛ウ゛ウ゛ウ゛ウ゛ウ゛
う゛う゛う゛う゛う゛う゛う゛
なんて、並べてたのは、、、
私だったか?
kirさんだったか?
niさんだったか?
????
忘れました――
投稿情報: ジョー3 | 2008年12 月21日 (日曜日) 午後 09時53分
「う゛」の話、見つけました。
ジョー3さんのところでした。
でも、よくこんなことに気づきますね~
流石です(o^^o)
http://blog.livedoor.jp/jyo33/archives/15483396.html#more
http://blog.livedoor.jp/jyo33/archives/15554598.html#more
投稿情報: くまぷー | 2008年12 月21日 (日曜日) 午後 10時07分
あーーー俺の記憶って、まだ、、いいかもーー
>私だったか?
>kirさんだったか?
>niさんだったか?
>http://blog.livedoor.jp/jyo33/archives/15483396.html#more
↑3人いたーーー
投稿情報: ジョー3 | 2008年12 月21日 (日曜日) 午後 10時19分
kirさんは覚えていたのかな~?
投稿情報: くまぷー | 2008年12 月21日 (日曜日) 午後 10時24分
みなさん、お付き合い下さいまして
ありがとうございました。
また宜しくお願い致します。 (o^^o)
投稿情報: くまぷー | 2008年12 月21日 (日曜日) 午後 10時44分
寝苦しくて目が覚めて・・・
いいとこ取りの141文字でも、
=CHAR(CODE(JIS(MID(ASC(PHONETIC($A1))&REPT(" ",256),COLUMN(A1),1)))-256*(CODE(JIS(MID(ASC(PHONETIC($A1))&REPT(" ",256),COLUMN(A1),1)))>9504))
来週あたり誕生日のくまぷーさま
〆のあとにゴメンなさいm(__)m
投稿情報: む印 | 2008年12 月22日 (月曜日) 午前 02時10分
む印さんの式は121に出来ますよ。
&REPT(" ",256)を消して、midの後に&" "
>kirさんは覚えていたのかな~?
うろ覚えでしたのでくまぷーさんが条件を制限してくれて助かりました。
ヴの対応にSUBSTITUTE掛けると長い・・・
163:=CHAR(CODE(JIS(MID(ASC(SUBSTITUTE(PHONETIC($A1),"ヴ","ヴ")),COLUMN(A1),1)&" "))-256*(CODE(JIS(MID(ASC(SUBSTITUTE(PHONETIC($A1),"ヴ","ヴ")),COLUMN(A1),1)&" "))>9504))
>もうひとつ面白いのがあったような気がするが、
違う件かもしれないですが、カタカナの小さいカとケも変換するとしたら?
CODE:文字→変換→変換
9588:ヴ→ヴ→う゛
9589:ヵ→?
9590:ヶ→?
無難にカタカナのまましかないかなあ。
一ヶ所・一ヵ所・コロッケ5ヶ・10ヶ300円
投稿情報: kir | 2008年12 月22日 (月曜日) 午後 02時07分
>む印さんの式は121に出来ますよ。
&REPT(" ",256)を消して、midの後に&" "
あっ、ホントだ!スッキリしますねー、
これはもう殆ど、kirさんとminmaxさんの式ですねd^^
投稿情報: む印 | 2008年12 月22日 (月曜日) 午後 04時46分
うわー・・・・・・
3名様、、、すごいねーーー
この勢いで、、
24日から、、も、、がんばってね、、
投稿情報: ジョー3 | 2008年12 月22日 (月曜日) 午後 07時39分
>来週あたり誕生日のくまぷーさま
よく、ご存じですね(^^ゞ
でも、誕生日はもう、うれしくもない・・・(^^ゞ
>うろ覚えでしたのでくまぷーさんが条件を制限してくれて助かりました。
「がう゛ぁどん」とが「う゛ぃーとるごう」で確かめて
ダメでしたので・・・(^^ゞ
>24日から、、も、、がんばってね、、
去年はお陰様で盛り上げて頂きました。(^^ゞ
懐かしい・・・
http://kumapooh.justblog.jp/blog/cat2262670/index.html
投稿情報: くまぷー | 2008年12 月22日 (月曜日) 午後 08時26分
>でも、誕生日はもう、うれしくもない・・・(^^ゞ×2
わたくし、だいぶ頭(髪・中身)も薄くなり・・・(T_T)
投稿情報: む印 | 2008年12 月22日 (月曜日) 午後 10時56分