エクセルについて質問です。

B列に複数行にわたって文字列が記入されてるとします。
その中から半角英数文字をすべて削除する方法を教えてください。
関数、マクロを使う方法でもかまいません。
以上、よろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/12/03 12:02:45
  • 終了:2007/12/03 22:39:50

回答(4件)

id:m160704010705 No.1

m160704010705回答回数10ベストアンサー獲得回数02007/12/03 12:33:40

ポイント10pt

直接的な回答ではなく 申し訳ありません。

以前 約12万件のデータの扱いに困った時に、丁寧に教えて頂いたサイトがあります。

有名なのでご覧になったかもしれませんが、ここで質問するとかなりレスポンスが早く 回答が帰ってきました。

もし 参考になるようでしたら、ご覧下さい。

http://www.excel.studio-kazu.jp/cgi-bin/kazuwiki2r.cgi?mycmd=rec...

id:taroemon

ご回答ありがとうございます。


他の方からの直接的なご回答をお待ちします。

質問文に補足ですが、要は全角文字を残すということです。

よろしくお願いします。

2007/12/03 12:45:05
id:snpgr No.2

snpgr回答回数27ベストアンサー獲得回数32007/12/03 12:54:18

ポイント10pt

Sub test()

Dim RE,LastRow As Long,i As Long

Set RE = CreateObject("VBScript.RegExp")

With RE

.Pattern = "[0-9a-zA-Z]"

.Global = True

LastRow = Cells(1,2).SpecialCells(xlLastCell).Row

For i=1 To LastRow

.Replace(Cells(i,2),"")

Next

End With

Set RE = Nothing

End Sub


適当にググって書いたVBAマクロです

EXCELすら普段触らない上にテスト環境が無いので動くか不安です


必ずXLSを保存してからやって見て下さい

http://q.hatena.ne.jp/answer

id:taroemon

ご回答ありがとうございます。

「.Replace(Cells(i,2),"")」でエラーが出ます。

実行できることをご確認のうえ、

貼り付けてそのまま使えるマクロを

ご回答くださいますようお願いします。

2007/12/03 13:02:46
id:snpgr No.3

snpgr回答回数27ベストアンサー獲得回数32007/12/03 13:32:38

ポイント30pt

先ほどは申し訳ありませんでした

Replaceの行を下記のように変更してください


Cells(i,2) = RE.Replace(Cells(i,2),"")


VBSで動作確認をしましたので

おそらくVBAでも動作すると思われます

http://q.hatena.ne.jp/answer

id:taroemon

再度のご回答ありがとうございます。

今度はうまくいきました。

2007/12/03 22:38:10
id:degucho No.4

degucho回答回数251ベストアンサー獲得回数662007/12/03 13:44:58

ポイント40pt

バージョン記載がされていませんので2000での場合です

Sub Rep()
    Dim RegExp As Object
    Set RegExp = CreateObject("VBScript.RegExp")
    With RegExp
        .Pattern = "[0-9a-zA-Z]"
        .Global = True
    End With
    
    Dim r As Range
    Set r = Range(Range("B1"), Range(Range("$B$65536").End(xlUp).Address))
    
    Dim Match   As Object
    Dim Matches As Object
    
    Dim c As Range
    For Each c In r
        Dim v As Variant
        v = c.Value
        
        Set Matches = RegExp.Execute(c.Value)
        For Each Match In Matches
            c.Value = Replace(c.Value, Match.Value, "")
        Next
    Next

End Sub

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja...

id:taroemon

ご回答ありがとうございます。

うまくいきました。

2007/12/03 22:38:27
  • id:SALINGER
    ちなみに、半角記号カナも削除するマクロです。
    正規表現は使わず全角に変換して変化するかで削除しています。空白を含めほぼほとんどの半角を削除できます。

    Sub hankakuDEL()
    For j = 1 To Cells(Rows.Count, 2).End(xlUp).Row
    str1 = Cells(j, 2).Value
    str2 = ""
    For i = 1 To Len(str1)
    str2 = str2 + hankaku(Mid(str1, i, 1))
    Next i
    Cells(j, 2).Value = str2
    Next j
    End Sub

    Function hankaku(str As String) As String
    If str <> StrConv(str, vbWide) Then
    hankaku = ""
    Else
    hankaku = str
    End If
    End Function

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません