- 締切済み
エクセル 英数字の削除
エクセルの表で住所欄(A列)があり、セル内の半角・全角数字(ハイフンを含む)を削除するにはどうすれば良いでしょうか? ※削除項目【0~9,0~9,-,ー】 データは常に増え続け現在2000ほどあります。 A列上での作業を行い変換できればと思います。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 最近は、あまり、この手のコードを書いたことがないので、やり方を忘れています。 バックアップを取ってからためしてみてください。ただ、住所欄から抜き出すのは、 削除項目【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)
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)
置換を使えばできます。 ctrl(キー)とHキーを同時に押せば、置換のダイアログがでますので。 そこで、「検索する文字列」に削除したい文字(ここでは「ー」ハイフンをいれて、「置換する文字列」には何も入れずに すべて置換のボタンをクリックすればよいでしょう。
お礼
早速のご回答ありがとうございます。 ただこの場合、置換の作業を22回行うということですよね。 VBAを使用して1回でできる方法などありますでしょうか?