- ベストアンサー
Excel2000で置換えについての質問。
一つの列内の半角カタカナを、全角カタカナに置き換えたいのですが、可能でしょうか? また、どの様にすれば良いのでしょうか? 宜しくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
ごめんなさい。 ちょっと急ぎましたので、間違えました。 次のコードと入換えてください。(7行目が追加行です。) Sub 半角カタカナだけを全角変換() Dim Rng As Range Dim StrW As String Dim ConvStr As String Dim N As Integer For Each Rng In Selection ConvStr="" StrW = StrConv(Rng.Value, vbWide) For N = 1 To Len(StrW) If Asc(Mid(StrW, N, 1)) < -31849 And _ Asc(Mid(StrW, N, 1)) > -31937 Then ConvStr = ConvStr & Mid(StrW, N, 1) Else ConvStr = ConvStr & StrConv(Mid(StrW, N, 1), vbNarrow) End If Next N Rng.Value = ConvStr Next Rng End Sub
その他の回答 (6)
- ja7awu
- ベストアンサー率62% (292/464)
「半角カタカナだけを全角に変換する」ということであれば、残りの「英数記号を半角に」と いう条件を付けないと、かなり面倒になります。 ご承知のように半角のカタカナは、濁点や半濁点だけで1文字となっています。 これを一文字の"ガギグゲゴ"に変換するためには、一旦文字列全体を全角にしないと、 かなり手間がかかることになります。 カ゛キ゛のように2文字で表示してようなら 簡単で、「英数記号は元のまま」ということも出来ますが・・・ ということで、ここでは、カタカナ以外は、半角にしています。 変換する範囲を選択した状態で次のマクロを実行すると、カタカナは全角に変換され、 その他、英数記号は半角に変換されます。 それで宜しかったら、次の手順でテストしてみてください。 【マクロ設定手順 】 1.Alt + F11 で VBE(Visual Basic Editor)を開きます。 2.VBE のメニューから[挿入] -->[標準モジュール] を指定します。 3.モジュールウィンドウに下記コードをコピーして貼り付けます。 4.Alt + Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。 5.メニューから[ツール]-->[マクロ]-->[セキュリティ]で「セキュリティレベル」を 「中」にして、[OK]します。 6.実行するときは、変換したい範囲を選択し、Alt + F8 (メニューから[ツール]--> [マクロ]-->[マクロ])で「半角カタカナだけを全角変換」を指定し、[実行]ボタンを 押します。 これで如何でしょうか。 Sub 半角カタカナだけを全角変換() Dim Rng As Range Dim StrW As String Dim ConvStr As String Dim N As Integer For Each Rng In Selection StrW = StrConv(Rng.Value, vbWide) For N = 1 To Len(StrW) If Asc(Mid(StrW, N, 1)) < -31849 And _ Asc(Mid(StrW, N, 1)) > -31937 Then ConvStr = ConvStr & Mid(StrW, N, 1) Else ConvStr = ConvStr & StrConv(Mid(StrW, N, 1), vbNarrow) End If Next N Rng.Value = ConvStr Next Rng Set Rng = Nothing End Sub
お礼
回答有り難う御座います。 実行しましたら、カタカナのみが全角になったのは良いのですが、妙な事になりました。 一件のみ選択して実行をすると上手くいき、三つまとめて選択しても上手くいきます。 半角カタカナの無い場所で実行しても、勿論変化無しです。 しかし、何十、何百とまとめて実行をすると、一つのセルの中に何十もの住所が現れるのです。
補足
住所が現れるとは、そのセルの内容の事です。
- imogasi
- ベストアンサー率27% (4737/17069)
#3です。 質問を良くみると半角カタカナ->全角カタカナがご希望でした。 #3のお礼にご指摘があり、失礼しました。取り下げます。 半角カタカナ->全角ひらがなと勘違いして、 本ではエクセルVBAでもStrConv(a, vbHiragana)が使える 記述もありますが、私がやると半角カナ->全角カナにならず(追記)、半角のカナのままで、何でだろうと悩んでいました。JIS(a)を経由すると全角ひらかなになったので、できたと上げたのですが、おっしゃる通りです。 JISもだめとなると、むつかしいですね。 (追記) 下記WEBサイトを見つけました。ご参考まで。 '全角カタカナからひらがなに変換(アイウエオ → あいうえお) '半角カタカナは変換してくれない strBuf = StrConv("アイウエオ", vbHiragana) http://www.page.sannet.ne.jp/y_yoshi/vb/vb_strconv.htm
お礼
度々どうもです。 難しいのですね…追記参考にさせて頂きます。 有り難う御座いました。
- ja7awu
- ベストアンサー率62% (292/464)
何も関数作ることないんですよ。 #1さん のJIS関数で変換したら、その範囲をコピーして、同じ範囲の左上を 右クリックし、「形式を選択して貼り付け」で「値」を指定して[OK]すれば いいだけです。 そのあと、A列を削除します。
お礼
回答、有り難う御座います。 全部全角になってしまうのですが、半角カタカナのみ全角にする事は出来ますか?
- imogasi
- ベストアンサー率27% (4737/17069)
#2です。B列を編集-コピーでコピーし、自分自身の列に「形式を選択して貼りつけ」「値」で貼りつけると式が消えます。 その後A列を削除してもB列に変化はありません。
お礼
コピーは成功しましたが、#2の方法をやったところ、全角ひらがなになってしまいました。 しかも数字等も全角になってしまいました。 カタカナのみを全角にするのは無理なのでしょうか?
- imogasi
- ベストアンサー率27% (4737/17069)
ツール-マクロ-VBEをクリック。 挿入-標準モジュールで白色の画面が出る。 その標準モジュール画面に下記を貼りつけ(ユーザー(私製)関数を作る。)zenkanaと言う名は別の名でも良い。 Function zenkana(a) zenkana = StrConv(a, vbHiragana) End Function そしてA列にカナ(半角)文字列があるとして B1セルに=zenkana(JIS(A1)) と入れて下へ複写する。 (テスト例)OKWEBで半角カナが全角に強制変換されます。 注意して読み替えてください。 アカサカ あかさか インド いんど ロンドン ろんどん
お礼
回答、有り難う御座います。 この方法は、#1のお礼に書いた様な場合は大丈夫でしょうか?
- ibdij
- ベストアンサー率41% (5/12)
A1 B1 カタカナ =JIS(A1) です。
お礼
回答、有り難う御座います。 全角変換は出来たのですが、変換した後、列Aを削除したいのですが、削除すると折角変換した列Bが「#REF!」となってしまいます。 変換した後、表示されているものを残して、関数のみを無くす事は出来ますか? 無茶な質問かもしれませんが、宜しくお願いします。
補足
全て全角になってしまいました。
お礼
何度も有り難う御座います。 よくスラスラとこの様なものが書けますね(^^;) 大変助かりました。