- ベストアンサー
【Excel】 全角(数字だけ)を半角にしたい
住所の表を整理しているのですが、数字が全角になっているので、半角に変換したいと思い、ASC関数を使ったのですが、カタカナまで半角になってしまいました。 カタカナは全角で、数字だけ半角にしたいのですが。。 数字だけを半角にする方法ってないんでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
問題は解決済みと思いますが、数字のみ全角→半角にするマクロです。ご参考まで。 Sub MacroR() Dim idx As Integer, trg As Range Set trg = ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, xlTextValues) For idx = 0 To 9 trg.Replace What:=Right(StrConv(str(idx), vbWide), 1), _ Replacement:=Right(str(idx), 1) Next End Sub マクロはALT+F11でVBE画面を開き、「VBAProjectエクスプローラのシート名右クリック」→「挿入」→「標準モジュール」で表示される画面にペーストして下さい。実行はALT+F8を押して、マクロ名を選択します。
その他の回答 (4)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 お聞きになる前に、ここのカテゴリを検索しても良かったと思います。 同じような質問は、何度もありますね。いろんな人が回答しています。 以下の私の場合は、以下のようなものがあります。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2301108 (http://okwave.jp/kotaeru.php3?q=2301108) SpecialCells で、セルを取得すればよいと思いますが、少し手直ししました。あまりきちんと調べてはいませんが、大丈夫のような気がします。 '標準モジュール Sub HenkanMcr() Dim r As Range Dim c As Range Const MPATTERN As String = "([0-9]+)[^0-9]*" On Error Resume Next Set r = ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants) On Error GoTo 0 If Not r Is Nothing Then For Each c In r.Cells If StrConv(c.Value, vbNarrow) Like "*#*" Then c.Value = myRegExp2(c.Value, MPATTERN) End If Next c End If Set r = Nothing End Sub Private Function myRegExp2(str As Variant, STRPATTERN As String) Dim Matches As Object 'MatchCollection Dim Match As Object 'as Match Dim buf As String Dim buf2 As String Dim rep As String With CreateObject("VBScript.RegExp") .Pattern = STRPATTERN .IgnoreCase = False .Global = True If .test(str) Then Set Matches = .Execute(str) buf2 = str For Each Match In Matches rep = .Replace(Match.Value, "$1") buf = StrConv(rep, vbNarrow) buf2 = Replace(buf2, rep, buf) Next myRegExp2 = buf2 Set Matches = Nothing Else myRegExp2 = str End If End With End Function
お礼
ご回答ありがとうございます! せっかく詳細なお答えをいただいたのにもかかわらず、 私の知識ではよく理解することができませんでした。。 ごめんなさい。もっと勉強します。
- mshr1962
- ベストアンサー率39% (7417/18945)
有料ですが下記のサイトのアドインを使うのが便利ですね。 仕事を加速する!Excel魔法のボタンコレクション」1,580円 http://www.freeformat.co.jp/AddInIndex.htm
お礼
へぇ~こんなのがあるんですね。 大変興味深いです。 まず、「仕事を加速する!」というキャッチコピーにやられました(笑)。かなりそそられますね! 使ったことありますか?大活躍ですか? どれくらいエクセルやる人が使った方がいいのでしょう?? 最近、データ入力・グラフ作成など、エクセルを使う機会が多くなってきましたので、 やっとエクセルのことを勉強し始めたしだいです。 と、言っても「こんなことできないだろうか」という疑問が生じたときに、調べてやってみるというようなカンジですが。 私が知らないだけで、世の中にはいろいろ便利なものがあるんだろうに、なかなか手を出せずじまいです。
- Ryokucha
- ベストアンサー率25% (115/450)
今回だけの対処でしたら 置換で処理してしまっては如何でしょう? 10回やれば済みます。(~_~;)
お礼
ご回答ありがとうございます。 今回は置換処理で対応することにしました。 なんとかなりそうです。
- kaduno
- ベストアンサー率21% (130/592)
単純に、文字列の置換で出来ませんか? シートの左上をクリックして、シート全体を選択しておいて、編集→置換から、全角数字を半角数字にするだけです。 0から9まで10回繰り返す程度でしたら、苦にもならないでしょう。
お礼
あ、なるほど。 そのテがありましたか! 10回くらいだったら、そんなに頻繁に起こることでもありませんし、 それほど大変ではないですね。 その方法で対処してみます。 ご回答ありがとうございました。助かりました。
お礼
ご回答ありがとうございます! 表の修正にはまだ手をつけておりませんでしたので、 早速試してみました。 “マクロアレルギー”で、パッと見ただけで一瞬くらくらしてひるんでしまいましたが、 ご説明のとおりに冷静にひとつずつ作業していったら、 無事、「数字のみを半角にする」という課題が解決しました! すごいですね~~!! おぉ~~~~みるみるうちに変換されていくでわありませんかっ!! カンドーしましたっ!!!(涙) エクセルっておもしろいですね。もっと勉強したいと思いました。 ホントにホントに、ありがとうございました。