• 締切済み

エクセル 英数字の削除

エクセルの表で住所欄(A列)があり、セル内の半角・全角数字(ハイフンを含む)を削除するにはどうすれば良いでしょうか? ※削除項目【0~9,0~9,-,ー】 データは常に増え続け現在2000ほどあります。 A列上での作業を行い変換できればと思います。 よろしくお願いします。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 最近は、あまり、この手のコードを書いたことがないので、やり方を忘れています。 バックアップを取ってからためしてみてください。ただ、住所欄から抜き出すのは、  削除項目【0~9,0~9,-,ー】 単純に、こういうような削除の仕方でよいのか、少し不安が残ります。 もう少し規則性があって複雑ではなかったかと思いますが、とりあえず、私のほうは、ためしのサンプル程度に掲示しておきます。理屈は、#1 さんと同じ理屈で、コードの中ではヒットしたものの置換を繰り返しています。 '標準モジュール Sub RegDeleFigures()   Dim myPat As String   Dim Matches As Object   Dim Match As Object   Dim c As Range   Dim buf As String      myPat = "[\d0-9ー\-]"   With CreateObject("VBScript.RegExp")     .Pattern = myPat     .Global = True     Application.ScreenUpdating = False     For Each c In Range("A1", Range("A65536").End(xlUp))       If .Test(c.Value) Then         buf = c.Value         Set Matches = .Execute(buf)         For Each Match In Matches           buf = Replace(buf, Match, "")         Next Match         c.Value = buf       End If     Next c     Application.ScreenUpdating = True   End With End Sub

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

Sub try()  Dim Rexp As Object  Dim st As String  Dim i As Long    Set Rexp = CreateObject("VBScript.Regexp")  Rexp.Pattern = "[0-9,0-9,-{1,},ー]"  Rexp.Global = True  For i = 1 To Range("A" & Rows.Count).End(xlUp).Row      st = Range("A" & i).Value      Range("A" & i).Value = Rexp.Replace(st, "")  Next End Sub こうゆう感じですか?

  • e46_2005
  • ベストアンサー率32% (15/46)
回答No.1

置換を使えばできます。 ctrl(キー)とHキーを同時に押せば、置換のダイアログがでますので。 そこで、「検索する文字列」に削除したい文字(ここでは「ー」ハイフンをいれて、「置換する文字列」には何も入れずに すべて置換のボタンをクリックすればよいでしょう。

noname#68315
質問者

お礼

早速のご回答ありがとうございます。 ただこの場合、置換の作業を22回行うということですよね。 VBAを使用して1回でできる方法などありますでしょうか?

関連するQ&A