- ベストアンサー
エクセルでの全角から半角への変換
エクセルにおいて、具体的には、選択範囲の住所欄の例えば「10番12号」を「10番12号」に、つまり数字の項目のみを「全角」から「半角」に一括変更することは可能でしょうか?数十件であればそれぞれ変更するのですが、数千件にのぼる場合、非常に労力を要するため、できる方法があれば、どなたかお教えください。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 マクロで作ってみました。よろしかったら、標準モジュールに貼り付けてお使いください。 以下の、ユーザーオプションの部分で、設定してください。 何列目右 は、右に何列目か、ということで、A列にデータがあれば、右に2で、C列に出力されます。 一桁は変換をFalse にすると、 例: 東京都大江戸八百八町1~9丁目 は、そのままです。 東京都大江戸八百八町11丁目 は、 東京都大江戸八百八町11丁目 となります。これは、フォントによって、かなり見え方が違います。 標準モジュールへの取り付け方 Alt + F11 (Altを押しながらF11)を押すと、Visual Basic Editor 画面が出てきます。 次に、メニューの[挿入]-[標準モジュール]と開けて、クリックすると、画面が現れますので、以下のコードを貼り付けて、 Alt + Q で、画面を閉じます。 最初に、変換したい範囲の最初の行にマウスカーソルを置いてから、Alt + F8 で、「HenkanPrc」 を選びクリックしてみてください。その列の最後まで変換します。変換するのは、数字のみです。カタカナや英字は変換されません。 p.s.毎年、1回は作っています。 '------------------------------------------------------ Sub HenkanPrc() '住所変換 Dim c As Variant Dim i As Integer Dim j As Boolean '------------------------------------------- 'ユーザーオプション Const 何列目右 As Integer = 2 Const 一桁は変換 As Boolean = True 'しない場合は、False '------------------------------------------- i = 何列目右 j = Not (一桁は変換) Application.ScreenUpdating = False For Each c In Range(ActiveCell, Cells(65536, ActiveCell.Column).End(xlUp)) If Not IsEmpty(c.Value) Then c.Offset(, i).Value = Two2One(c.Value, j) 'Two2One(c.Value,True) とすると、1桁のものは変換しない End If Next Application.ScreenUpdating = True End Sub Private Function Two2One(myText As String, Optional TwoNums As Boolean) As String Dim myPattern As String Dim Matches As Object Dim Match As Object Dim buf As String If VarType(myText) = vbString Then With CreateObject("VBScript.RegExp") If TwoNums = True Then myPattern = "([0-9]{2,})" Else myPattern = "([0-9]+)" End If .Pattern = myPattern .Global = True If .Test(myText) Then buf = myText Set Matches = .Execute(buf) For Each Match In Matches buf = Replace(buf, Match, StrConv(Match, vbNarrow)) Next Match myText = buf End If End With End If Two2One = myText End Function '------------------------------------------------------
その他の回答 (2)
- redowl
- ベストアンサー率43% (2140/4926)
こんな方法も・・・・ 仮に住所に入力セルが B1 だとしたら 別セルに =ASC(B1) で、 全角の「英、数、カナ」 が 半角になります。 このセルをコピーして、さらに別セルに形式選択で「値」ペースト するとか・・・
- Cupper
- ベストアンサー率32% (2123/6444)
対象が何千件あっても置換を10回行なえば終わります。 編集 → 置換 検索文字に全角の 0 を入力 置換文字に半角の 0 を入力 これを0~9に掛けて繰り返す。 多数のブックに対して繰り返し行なう必要があるのであれば記録マクロを使用すると2回目以降は一瞬で(処理時間は掛かりますが)終わります。
お礼
さっそくの回答ありがとうございました。そうですね、置換によりすればよかったんですね。本当に助かりました。