• ベストアンサー

Excel:文字列の自動操作

Excel2003です。 [A3]セルに何らかの文字列を入力させると、[B3]セルには[=LEFTB(A3,12)]という数式を設定し、自動入力文字数を全角6文字以内で表示させています。 さらに[D3]セルには、 [=SUBSTITUTE(SUBSTITUTE(PHONETIC(A3),"(株)",""),"(有)","")] ※式中の(株)(有)は記号 という数式を設定し、[A3]セルの文字列のフリガナを半角カタカナで自動表示させています。 そこで質問です。 1.[A3]セルへの入力が手入力(直接入力)の場合はいいのですが、ここへの入力が他のアプリやブラウザ等の一覧表などからのコピー&ペーストの場合、[D3]セルには半角カタカナではなく[A3]セルと同じ内容になってしまいます。 そういう場合、可能であれば自動的に半角カタカナで表示が出るようにしたいのですが、無理ですよね? もし、無理ならコピペでの入力時に限り、[D3]を空白にする、といったことは出来ますか? 2.[D3]セルへの自動表示文字数を半角文字で16文字以内にしたいのですが、どうすれば良いでしょうか? 出来なければここもまた空白にする、といったことも出来ないでしょうか? よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
noname#79209
noname#79209
回答No.5

#1です。 > =ASC("アイウエオ")は > LEFT(ASC(SUBSTITUTE(SUBSTITUTE(PHONETIC(A3),"(株)",""),"(有)","")),16) > と、どのように混ぜるのでしょうか? 混ぜるも何も、既に混ざっていますが...見落としましたか? LEFTの直ぐ右に入っています。 SUBSTITUTE(SUBSTITUTE(PHONETIC(A3),"(株)",""),"(有)","") で、フリガナ化した文字列から記号の「(株)」と「(有)」が除かれます。 「(株)親和産業北海道支店」→「シンワサンギョウホッカイドウシテン」なので、その外側で ASC("シンワサンギョウホッカイドウシテン")と解釈されます。 「シンワサンギョウホッカイドウシテン」→半角カタカナで「シンワサンキ゛ョウホッカイト゛ウシテン」 よって、LEFTB("シンワサンキ゛ョウホッカイト゛ウシテン",16)となるので、 結果は「シンワサンキ゛ョウホッカイト゛ウ」となります。

Youyou
質問者

お礼

ありがとうございます。 早とちりしていました。理解できました。

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.4

マクロでユーザー定義関数を作るか?CHANGEイベントで設定ですね。 ユーザー定義関数 Function PHONETIC2(KN As String) KN1 = Replace(Replace(KN, "(株)", ""), "(有)", "") KN2 = StrConv(Application.GetPhonetic(KN1), vbKatakana + vbNarrow) PHONETIC2 = Left(KN2,16) End Function シートマクロ(入力時に実行するイベント) Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then '1=A列です。変更が必要な場合は変えてください。 If Target.Row > 2 Then '1行目を項目行として外しています。 If Target.Phonetics(1).Text = "" Then 'フリガナがない場合の設定 Target.Phonetics(1).Text = Application.GetPhonetic(Target.Value) End If 'ターゲットの右のセルに16桁のフリガナを表示 Target.Offset(0, 1) = Left(StrConv(Replace(Replace(Target.Phonetics(1).Text, "(株)", ""), "(有)", ""), vbKatakana + vbNarrow), 16) End If End If End Sub

Youyou
質問者

お礼

ありがとうございます。 マクロはまだ勉強中なので、ゆくゆくはこのような手法も込みで考えたいと思います。

すると、全ての回答が全文表示されます。
  • koko88okok
  • ベストアンサー率58% (3839/6543)
回答No.3

下記URLの過去ログをご参照下さい。 手動またはマクロを使って振り仮名を表示できるようです。 「エクセルのPHONETIC関数(もしくはマクロ)で一括してフリガナ変換をしたい。」 http://oshiete1.goo.ne.jp/qa2616724.html

Youyou
質問者

お礼

ありがとうございます。 マクロは使えたら便利に違いないのですが、まだ修行中の身ゆえ・・・ ゆくゆくは身につけたいと思います。

すると、全ての回答が全文表示されます。
noname#79209
noname#79209
回答No.2

#1です。 半角に限定したければ、LEFTでなくLEFTBを使います。 ただしバイト単位になるので、半角全角が混じった文字列だと 変な結果になることも有ります。

Youyou
質問者

お礼

ありがとうございます。 半角全角が混在する可能性は殆ど無いのでOKです。

すると、全ての回答が全文表示されます。
noname#79209
noname#79209
回答No.1

=ASC("アイウエオ") とすれば全角カタカナが半角カタカナになります。 濁点、半濁点でも大丈夫です。 また、全角数字や全角アルファベットにも対応します。 従って、D3の式は LEFT(ASC(SUBSTITUTE(SUBSTITUTE(PHONETIC(A3),"(株)",""),"(有)","")),16) でよろしいかと...

Youyou
質問者

補足

ありがとうございます。 =ASC("アイウエオ")は LEFT(ASC(SUBSTITUTE(SUBSTITUTE(PHONETIC(A3),"(株)",""),"(有)","")),16) と、どのように混ぜるのでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A