人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: taroemon
●カテゴリ:コンピュータ
✍キーワード:エクセル マクロ 文字列 関数
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● m160704010705
●10ポイント

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

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

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

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

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

◎質問者からの返答

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


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

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

よろしくお願いします。


2 ● snpgr
●10ポイント

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

◎質問者からの返答

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

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

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

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

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


3 ● snpgr
●30ポイント

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

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


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


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

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

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

◎質問者からの返答

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

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


4 ● degucho
●40ポイント

バージョン記載がされていませんので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...

◎質問者からの返答

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

うまくいきました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ