プロが教えるわが家の防犯対策術!

1.文字列から複数条件で、複数文字を削除したいです。
企業名の一覧を作成し、エクセル関数でフリガナを付けましたが、”(株)”、”(有)”が前後どちらかに付いてきて邪魔です。とる関数ありますか?
2.フリガナを全角カナではなく、半角カナにできますか?
3.企業名に英数があり、そのフリガナは英数のままです。フリガナをつけるにはどうすれば良いでしょうか。

 宜しくお願いします。

A 回答 (5件)

No.4です!


たびたびごめんなさい。

前回のコードを少し訂正して、一気にD列に表示するようにしてみました。

B2セルの数式は前回同様
=ASC(PHONETIC(A2))
としてフィルハンドルでダブルクリックしておきます。

貼り付けるコードを

Sub test()
Dim i, j As Long
Dim str, buf As String
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
For j = 1 To Len(Cells(i, 2))
str = Mid(Cells(i, 2), j, 1)
If str Like "[A-z]" Then
str = WorksheetFunction.VLookup(str, Range("F1:G26"), 2, False)
Else
str = str
End If
buf = buf & str
Next j
Cells(i, 4) = Replace(Replace(buf, "(カブ)", ""), "(ユウ)", "")
buf = ""
Next i
End Sub

尚、この画面からコピー&ペーストすると「カブ」と「ユウ」が全角になると思いますので、
コード内の「カブ」と「ユウ」は半角に訂正してマクロを実行してください。
そうしないと(カブ)と(ユウ)はそのまま表示されてしまうと思います。

これで、たぶん希望に近い形になると思います。

以上、何度も失礼しました。m(__)m
    • good
    • 0
この回答へのお礼

 お礼が遅くなって申し訳ありませんでした。
せっかく画像まで付けて、オォーーっと感激したのですが、わたくしマクロを
作成したことがないもので…、お返事いただいた事を実行しようとすると、
それ以前の事からお勉強しなければという具合で、申し訳ないのですが…
あきらめました。ごめんなさい。
 何度もありがとうございました。m(__)m

お礼日時:2010/08/22 02:51

こんにちは!


横からお邪魔します。

No.1さんの補足を読ませていただいての投稿です。
一文字ずつ舐めるように検索していくしかないと思いますので、一例として。

↓の画像で説明します。
アルファベットの読み方は人それぞれだと思います。
たとえば「H」などの場合「エイチ」と読む人もいれば、
「エッチ」(←私かな?・・・なぁ~んちゃって!) と読む人もいると思います。
そこで一つの案ですが、アルファベットの読みを表にしておきます。
画像のF1~G26に対応する読みを入れておきます。
仮に G1セルは「えー」と入力し、F8キーを押します。これで半角カタカナとなりますので
Zまで同様な方法で入力。

そして、B2セルに
=ASC(PHONETIC(A2))
という数式を入れ、オートフィルで下へコピー。

その後、Sheet見出し上で右クリック → コードの表示 を選択し、
↓のコードをコピー&ペーストしてマクロを実行してみてください。

Sub test()
Dim i, j As Long
Dim str, buf As String
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
For j = 1 To Len(Cells(i, 2))
str = Mid(Cells(i, 2), j, 1)
If str Like "[A-z]" Then
str = WorksheetFunction.VLookup(str, Range("F1:G26"), 2, False)
Else
str = str
End If
buf = buf & str
Next j
Cells(i, 4) = buf
buf = ""
Next i
End Sub



これでD列のような表示になりますので、
別列に
=SUBSTITUTE(SUBSTITUTE(D2,"(カブ)",""),"(ユウ)","")
としてオートフィルで下へコピーではどうでしょうか?

以上、長々と書いてしまいました。
失礼しました。m(__)m
「1.文字列から複数条件で、複数文字を削除」の回答画像4
    • good
    • 0

1.substitute関数のネスト利用(3つぐらいまでが限度かな)


2.a.フリガナが別セルに人間が手入力したものか
b.エクセルのふりがな機能で振ったものか
書式ーふりがな
c.gETPHONETICメソッドなど
Function GP(A)
GP = Application.GetPhonetic(A)
End Function
はっきりしない。bなら半角カナ指定がある
3.これは簡易に振るという振り仮名の性格上そこまでの操作は用意されて無い。
プログラムでAや1を探して変更するほか無い。
いまは深く考えてないが、A1をエイワン、エイイチどちらにするかのような難しさがあるのでは。 
114をイチイチヨンでなくヒャクジュウシと振るのもプログラム的に面倒に思う。
人間で振りなおすのが各日で早いはず。
    • good
    • 0
この回答へのお礼

 お礼が遅くなって申し訳ありませんでした。
3番が参考になりました。これを読んだ時、人間の頭ってなんて賢くできてるんだろうと思いました。
大変、ありがとうございました。m(__)m

お礼日時:2010/08/22 02:35

1.置換の関数


=SUBSTITUTE(SUBSTITUTE(A1,"(株)",""),"(有)","")
2.全角→半角変換の関数
=ASK(A1)
3.置換の関数で出来ますが組み合わせが多いのでそのままの使用は出来ません。
ユーザー定義の関数(VBA)を作るしかないようです。
フリガナから全部やるとしたら

Funktion KANA(MOJI)
K1 = StrConv(Application.GetPhonetic(MOJI), vbKatakana + vbNarrow + vbUpperCase)
For I = 1 To Len(K1)
K2 = Mid(K1, I, 1)
K2 = Replase(K2, "(株)", "")
K2 = Replase(K2, "(有)", "")
K2 = Replase(K2, "A", "エー")
K2 = Replase(K2, "B", "ビー")
K2 = Replase(K2, "C", "シー")

(途中略)

K2 = Replase(K2, "X", "エックス")
K2 = Replase(K2, "Y", "ワイ")
K2 = Replase(K2, "Z", "ゼット")
KANA = KANA & K2
Next I
End Function
    • good
    • 0
この回答へのお礼

 お礼が遅くなって申し訳ありませんでした。
1番と2番を参考にさせていただきました。ですが、
3番を読んだ時、なるほどと思ったと同時に手間がかかると思いましたので、
あきらめました。時間がなかったもので…
大変、ありがとうございました。m(__)m

お礼日時:2010/08/22 02:42

1. =SUBSTITUTE(SUBSTITUTE(A1,"(株)",""),"(有)","")



2. (XL2002/2003で) 対象のセルを選択して 書式 - ふりがな - 設定 ●半角カタカナ

3. 対象のセルを選択して [Alt]+[Shift]+[↑]

ちなみにふりがなを取り出す関数は =PHONETIC(A1)

この回答への補足

【補足】
 質問下手ですみません。
フリガナですが、フリガナの列を作って関数「=PHONETIC(A1)」をつかって取り出しています。
その取り出した内容のことでの質問となります。

(例)企業名の列に「(株)ABC社」と入力したものが、フリガナの列に「(株)ABCシャ」と表示されます。
  こうなってほしいのですが…⇒エービーシーシャ(半角で)

補足日時:2010/07/28 23:39
    • good
    • 0
この回答へのお礼

 お礼が遅くなって申し訳ありませんでした。
1番が参考になりました。大変、ありがとうございましたm(__)m

お礼日時:2010/08/22 02:32

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