- ベストアンサー
1.文字列から複数条件で、複数文字を削除したいです。
1.文字列から複数条件で、複数文字を削除したいです。 企業名の一覧を作成し、エクセル関数でフリガナを付けましたが、”(株)”、”(有)”が前後どちらかに付いてきて邪魔です。とる関数ありますか? 2.フリガナを全角カナではなく、半角カナにできますか? 3.企業名に英数があり、そのフリガナは英数のままです。フリガナをつけるにはどうすれば良いでしょうか。 宜しくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
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
その他の回答 (4)
- tom04
- ベストアンサー率49% (2537/5117)
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
お礼
お礼が遅くなって申し訳ありませんでした。 せっかく画像まで付けて、オォーーっと感激したのですが、わたくしマクロを 作成したことがないもので…、お返事いただいた事を実行しようとすると、 それ以前の事からお勉強しなければという具合で、申し訳ないのですが… あきらめました。ごめんなさい。 何度もありがとうございました。m(__)m
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 横からお邪魔します。 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
- imogasi
- ベストアンサー率27% (4737/17069)
1.substitute関数のネスト利用(3つぐらいまでが限度かな) 2.a.フリガナが別セルに人間が手入力したものか b.エクセルのふりがな機能で振ったものか 書式ーふりがな c.gETPHONETICメソッドなど Function GP(A) GP = Application.GetPhonetic(A) End Function はっきりしない。bなら半角カナ指定がある 3.これは簡易に振るという振り仮名の性格上そこまでの操作は用意されて無い。 プログラムでAや1を探して変更するほか無い。 いまは深く考えてないが、A1をエイワン、エイイチどちらにするかのような難しさがあるのでは。 114をイチイチヨンでなくヒャクジュウシと振るのもプログラム的に面倒に思う。 人間で振りなおすのが各日で早いはず。
お礼
お礼が遅くなって申し訳ありませんでした。 3番が参考になりました。これを読んだ時、人間の頭ってなんて賢くできてるんだろうと思いました。 大変、ありがとうございました。m(__)m
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
1. =SUBSTITUTE(SUBSTITUTE(A1,"(株)",""),"(有)","") 2. (XL2002/2003で) 対象のセルを選択して 書式 - ふりがな - 設定 ●半角カタカナ 3. 対象のセルを選択して [Alt]+[Shift]+[↑] ちなみにふりがなを取り出す関数は =PHONETIC(A1)
お礼
お礼が遅くなって申し訳ありませんでした。 1番が参考になりました。大変、ありがとうございましたm(__)m
補足
【補足】 質問下手ですみません。 フリガナですが、フリガナの列を作って関数「=PHONETIC(A1)」をつかって取り出しています。 その取り出した内容のことでの質問となります。 (例)企業名の列に「(株)ABC社」と入力したものが、フリガナの列に「(株)ABCシャ」と表示されます。 こうなってほしいのですが…⇒エービーシーシャ(半角で)
お礼
お礼が遅くなって申し訳ありませんでした。 1番と2番を参考にさせていただきました。ですが、 3番を読んだ時、なるほどと思ったと同時に手間がかかると思いましたので、 あきらめました。時間がなかったもので… 大変、ありがとうございました。m(__)m