• ベストアンサー

エクセルでの全角から半角への変換

エクセルにおいて、具体的には、選択範囲の住所欄の例えば「10番12号」を「10番12号」に、つまり数字の項目のみを「全角」から「半角」に一括変更することは可能でしょうか?数十件であればそれぞれ変更するのですが、数千件にのぼる場合、非常に労力を要するため、できる方法があれば、どなたかお教えください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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)
回答No.2

こんな方法も・・・・ 仮に住所に入力セルが B1 だとしたら 別セルに  =ASC(B1) で、 全角の「英、数、カナ」 が 半角になります。  このセルをコピーして、さらに別セルに形式選択で「値」ペースト するとか・・・

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.1

対象が何千件あっても置換を10回行なえば終わります。  編集 → 置換  検索文字に全角の 0 を入力  置換文字に半角の 0 を入力 これを0~9に掛けて繰り返す。 多数のブックに対して繰り返し行なう必要があるのであれば記録マクロを使用すると2回目以降は一瞬で(処理時間は掛かりますが)終わります。

hanautaman
質問者

お礼

さっそくの回答ありがとうございました。そうですね、置換によりすればよかったんですね。本当に助かりました。

関連するQ&A