みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel:文字列の自動操作

Excel2003です。

[A3]セルに何らかの文字列を入力させると、[B3]セルには[=LEFTB(A3,12)]という数式を設定し、自動入力文字数を全角6文字以内で表示させています。
さらに[D3]セルには、
[=SUBSTITUTE(SUBSTITUTE(PHONETIC(A3),"(株)",""),"(有)","")]
※式中の(株)(有)は記号
という数式を設定し、[A3]セルの文字列のフリガナを半角カタカナで自動表示させています。

そこで質問です。
1.[A3]セルへの入力が手入力(直接入力)の場合はいいのですが、ここへの入力が他のアプリやブラウザ等の一覧表などからのコピー&ペーストの場合、[D3]セルには半角カタカナではなく[A3]セルと同じ内容になってしまいます。
そういう場合、可能であれば自動的に半角カタカナで表示が出るようにしたいのですが、無理ですよね?
もし、無理ならコピペでの入力時に限り、[D3]を空白にする、といったことは出来ますか?

2.[D3]セルへの自動表示文字数を半角文字で16文字以内にしたいのですが、どうすれば良いでしょうか?
出来なければここもまた空白にする、といったことも出来ないでしょうか?

よろしくお願い致します。

投稿日時 - 2008-02-01 01:10:36

QNo.3732912

暇なときに回答ください

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

#1です。
> =ASC("アイウエオ")は
> LEFT(ASC(SUBSTITUTE(SUBSTITUTE(PHONETIC(A3),"(株)",""),"(有)","")),16)
> と、どのように混ぜるのでしょうか?

混ぜるも何も、既に混ざっていますが...見落としましたか?
LEFTの直ぐ右に入っています。

SUBSTITUTE(SUBSTITUTE(PHONETIC(A3),"(株)",""),"(有)","")
で、フリガナ化した文字列から記号の「(株)」と「(有)」が除かれます。
「(株)親和産業北海道支店」→「シンワサンギョウホッカイドウシテン」なので、その外側で
ASC("シンワサンギョウホッカイドウシテン")と解釈されます。
「シンワサンギョウホッカイドウシテン」→半角カタカナで「シンワサンキ゛ョウホッカイト゛ウシテン」
よって、LEFTB("シンワサンキ゛ョウホッカイト゛ウシテン",16)となるので、
結果は「シンワサンキ゛ョウホッカイト゛ウ」となります。

投稿日時 - 2008-02-01 16:12:59

お礼

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

投稿日時 - 2008-02-06 00:16:17

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.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

投稿日時 - 2008-02-01 12:28:04

お礼

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

投稿日時 - 2008-02-06 00:24:20

ANo.3

下記URLの過去ログをご参照下さい。

手動またはマクロを使って振り仮名を表示できるようです。

「エクセルのPHONETIC関数(もしくはマクロ)で一括してフリガナ変換をしたい。」
http://oshiete1.goo.ne.jp/qa2616724.html

投稿日時 - 2008-02-01 10:23:10

お礼

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

投稿日時 - 2008-02-06 00:22:49

ANo.2

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

投稿日時 - 2008-02-01 03:53:54

お礼

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

投稿日時 - 2008-02-06 00:18:24

ANo.1

=ASC("アイウエオ")
とすれば全角カタカナが半角カタカナになります。
濁点、半濁点でも大丈夫です。
また、全角数字や全角アルファベットにも対応します。

従って、D3の式は
LEFT(ASC(SUBSTITUTE(SUBSTITUTE(PHONETIC(A3),"(株)",""),"(有)","")),16)
でよろしいかと...

投稿日時 - 2008-02-01 03:37:53

補足

ありがとうございます。

=ASC("アイウエオ")は
LEFT(ASC(SUBSTITUTE(SUBSTITUTE(PHONETIC(A3),"(株)",""),"(有)","")),16)

と、どのように混ぜるのでしょうか?

投稿日時 - 2008-02-01 09:20:05

あなたにオススメの質問